MVC RoleProvider和Authorize属性
我已经实现了自己的角色提供程序,而我没有使用默认的角色提供程序。 它的工作原理是,它可以告诉某人应该或不应该能够查看某个页面。
但是,它可以执行以下操作:
- 如果用户未登录,请重定向到我的登录页面
- 如果用户已登录但没有正确的角色,请重定向到其他页面
我还没有弄清楚如何使用Authorize属性执行此操作,我只有:
[Authorize(Roles="Admin")]
基本上我需要根据授权的哪个部分失败重定向到不同的页面。
我看看它是否是web.config中的东西,但没有明显的跳出来。
VoodooChild
回答#1。
对于#2 –
您可以做的是检查用户是否登录登录页面并显示不同的消息或完全不同的页面(甚至重定向到不同的操作)。
或者,您可以创建自己的授权属性。 这将要求您在任何地方使用此属性而不是默认的AuthorizeAttribute
public class CustomAuthorizeAttribute : AuthorizeAttribute { protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (filterContext.HttpContext.Request.IsAuthenticated) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary { { "action", "ActionName" }, { "controller", "ControllerName" } }); } else base.HandleUnauthorizedRequest(filterContext); } }
更新:
想到另一种方法。 当从另一个页面对login
页面进行重定向时,也会传递一个查询字符串ReturnUrl
。 因此,您还可以检查它是否包含某些内容并且用户已通过身份validation,用户可能无权查看该页面。
如果您正在使用FormsAuthentication,那么请回答您的第一个问题 – 是如果用户未经过身份validation或登录,则可以将其重定向到登录页面:
确保你在web.config文件中有这个(不确定你是否需要任何东西,将调查它..)
要回答第二个问题:“如果用户已登录但没有正确的角色,请重定向到其他页面”
我们这样做的方式是,我们使用了System.Web.Security.Roles.GetRolesForUser(username);
获取角色的方法,并在此基础上我们将用户重定向到正确的视图,登录后。
希望这可以帮助!
上述就是C#学习教程:MVC RoleProvider和Authorize属性分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/999826.html