代码之家  ›  专栏  ›  技术社区  ›  BobTheBuilder

当用户已经登录时,如何重定向到未经授权的页面而不是登录页面?

  •  1
  • BobTheBuilder  · 技术社区  · 16 年前

    当用户已登录但角色不正确时,如何将我的authorize(roles=“blah”)令牌设置为重定向到“您无权执行此操作”?目前它重定向到登录页面,这不是我们想要的。我们觉得将用户重定向到此页面会让人困惑,因为他们已经登录了。但是,如果他们没有登录,它应该重定向到登录页面。

    4 回复  |  直到 11 年前
        1
  •  4
  •   Darin Dimitrov    16 年前

    路 AuthorizeAttribute 设计的目的是首先查看用户是否经过身份验证,然后查看他是否在角色中。如果不满足这些条件中的任何一个,它将简单地返回 HttpUnauthorizedResult 从而将响应代码设置为401。为了实现你想要的,你需要实现你自己的 IAuthorizationFiler .

        2
  •  1
  •   to StackOverflow    16 年前

    您的登录页面可以检查用户是否经过身份验证(httpContext.user.Identity.IsAuthenticated),然后重定向到其他页面。

    或者,对经过身份验证的用户进行不同的呈现(隐藏登录表单,而显示适当的消息)。

        3
  •  1
  •   BenAlabaster    16 年前

    您应该查看Kazi Manzur Rashid关于定制授权提供商的博客: http://weblogs.asp.net/rashid/archive/2009/09/06/asp-net-mvc-and-authorization-and-monkey-patching.aspx . 做得好可能是一种相当复杂的野兽。因此,归根结底有几个选择,两种相当简单的“错误”做法和一种相当复杂的“正确”做法。你的电话。不管怎样-值得一读博客文章。

        4
  •  0
  •   ALIRA    11 年前

    路 AuthorizeAttribute 设计的目的是首先查看用户是否经过身份验证,然后查看他是否在角色中。如果不满足这些条件中的任何一个,它只会返回 HttpUnauthorizedResult 从而将响应代码设置为401。

    为了实现你想要的,你需要实现你自己的 IAuthorizationFiler .