asp.net-mvc - 如何检查用户是否在 Action 内获得授权

标签 asp.net-mvc forms-authentication authorization

通常我用 [Authorize] 保护我的操作但这次我需要检查用户是否在操作中获得授权。

例如

if(userIsAuthorized) {
    //do stuff
}
else {
    //return to login page
}

我相信我正在使用“表单例份验证”

这个问题有点类似于 this但给出的答案似乎都不起作用。

编辑:我做了更多的挖掘——似乎如果我在一个具有 [Authorize] 的操作上设置断点, User.Identity 已设置,但在没有它的 Actions 上,User.Identity 为空,即使我已登录

最佳答案

如果您只想知道用户是否已登录:

if (User.Identity.IsAuthenticated) { ... }

如果您尝试执行任何特定于角色的操作:
if (User.IsInRole("Administrators")) { ... }
User instance 是 Controller 的公共(public)属性类,因此您始终可以从您编写的 Controller 访问它。如果没有用户登录,您应该有一个 GenericPrincipal对于UserGenericIdentity对于User.Identity ,所以不用担心检查空值。

关于asp.net-mvc - 如何检查用户是否在 Action 内获得授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204766/

相关文章:

asp.net-mvc - 通用成员(member)提供商造成用户性能问题

asp.net-mvc - ASP.Net 中的路由保留字

javascript - 如何通过 JavaScript 创建 Telerik MVC 组合框

c# - 使用 FormsAuthentication.SetAuthCookie 存储更多信息

asp.net-mvc - ASP.NET MVC 如何使用 ASP.NET Membership Provider 管理用户内容

asp.net - 构建没有 session 状态的ASP.NET应用程序?

asp.net - FormsAuthentication.SignOut() 不会注销用户

c# - 访客和管理员问题的表单登录

go - 在 go AuthFromMD 中,始终期望将授权作为 header 名称。我怎样才能覆盖它。

c# - HandleUnauthorizedRequest 未覆盖