【问题标题】:User.IsInRole() always returns false only in controllerUser.IsInRole() 始终仅在控制器中返回 false
【发布时间】:2018-07-14 00:11:51
【问题描述】:

正如标题中的 User.IsInRole() 总是在控制器中返回 false,但在视图中运行良好。另外我不能设置 <roleManager enabled="true" />,因为我在项目构建时遇到以下错误

在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的部分是错误的。此错误可能是由于虚拟目录未在 IIS 中配置为应用程序所致。

有什么建议吗?或者有没有其他方法可以检查当前用户是否在角色中? (我试过Roles.IsUserInRole(User.Identity.Name, "Recruit") 但我得到了相同的结果)。我正在使用 ASP.NET MVC 5 和 .NET Identity 6.2

【问题讨论】:

  • 你在构建过程中仔细查看错误了吗?您的应用程序是否在 IIS 中设置为应用程序(不是虚拟目录)?
  • 如何查看?
  • 现在我发现我可以在 View 中使用 User.IsInRole() 但不能在控制器中使用它。有什么想法吗?
  • 在哪里在控制器中?请注意,控制器构造函数在设置用户之前运行

标签: c# .net asp.net-mvc asp.net-identity roleprovider


【解决方案1】:

Roles.IsUserInRole 是 MembershipProvider 的一部分。如果您使用的是 Asp.Net Identity,则需要改用 RoleManager (MSDN)。

原因是因为您可以使用User.IsInRole - 身份框架支持此调用,它会查看 cookie,检查 cookie 中可用的角色。

【讨论】:

    猜你喜欢
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多