我将用户添加到角色如下(请注意,我在我的机器上运行了下面显示的代码):
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/