gpt4 book ai didi

c# - MVC RoleProvider 和 Authorize 属性

转载 作者:太空狗 更新时间:2023-10-29 18:12:39 27 4
gpt4 key购买 nike

我已经实现了自己的角色提供者,并且没有使用默认角色提供者。它的工作原理是它可以判断某人何时应该或不应该能够查看页面。

但是,它能否做到以下几点:

  1. 如果用户没有登录,重定向到我的登录页面
  2. 如果用户已登录但没有正确的角色,则重定向到不同的页面

我还没有想出如何使用 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。因此,您还可以检查它是否包含某些内容并且用户已通过身份验证,很可能是用户没有查看该页面的权限。

关于c# - MVC RoleProvider 和 Authorize 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com