我将用户添加到角色如下(请注意,我在我的机器上运行了下面显示的代码):

    Roles.AddUserToRole(oMU.UserName, "Role1");

使用以下代码,我检查用户是否在角色中:
    if (Roles.IsUserInRole(txtUserName.Text.Trim(), "Role1"))

并且用户确实在角色中。

我运行以下命令来检查当前登录的用户是否在 Role1 中,但无法输入 if 语句 - 为什么? :
     if (User.IsUserInRole("Role1"))
     {
       // does not enter this code
     }

最佳答案

你不能调用 Roles.IsUserInRole("Role1")
一旦用户被分配到这样的角色 -

Roles.AddUserToRole(oMU.UserName, "Role1");

为什么?

IPrincipal 对象 仅在 HttpContext.Current.User 上注入(inject)到 Application_AuthenticateRequest

因此,您必须等待下一个请求才能访问 Roles.IsUserInRole("Role1")

更新

确保 cacheRolesInCookie 设置为 false,因为它有一些问题。
<roleManager enabled="true" cacheRolesInCookie="false"
   defaultProvider="DefaultRoleProvider">
      ....
</roleManager>

关于c# - Role.IsUserInRole,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16111886/

10-14 02:21