Asp.net MVC2重定向到登录页面响应302,当验证的用户没有权限。
我想分成两个动作
>如果用户没有验证,然后做它做,重定向到登录页面。
>如果用户已通过身份验证,但没有所需的权限,则返回相应的http状态代码,并且不显示权限dude页面。
解决方法
你可以这样编写自定义过滤器属性:
public class CustomAuthorizeAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.User.Identity == null || !filterContext.HttpContext.User.Identity.IsAuthenticated) { filterContext.Result = new RedirectResult(System.Web.Security.FormsAuthentication.LoginUrl + "?returnUrl=" + filterContext.HttpContext.Server.UrlEncode(filterContext.HttpContext.Request.RawUrl)); } //Check user right here if (userNotRight) { filterContext.HttpContext.Response.StatusCode = 302; filterContext.Result = new HttpUnauthorizedResult(); } } }
并在控制器中使用它:
[CustomAuthorize] public class HomeController : Controller { }