Asp.net MVC2重定向到登录页面响应302,当验证的用户没有权限。
我想分成两个动作
>如果用户没有验证,然后做它做,重定向到登录页面。
>如果用户已通过身份验证,但没有所需的权限,则返回相应的http状态代码,并且不显示权限dude页面。
有什么办法吗?或者我在授权和表单身份验证中做错了吗?只有我能想到的是通过编写自定义authorize属性,我想避免。
解决方法
你可以这样编写自定义过滤器属性:
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 { }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。