Role.IsUserInRole
本文关键字:IsUserInRole Role | 更新日期: 2023-09-27 18:10:08
我将一个用户添加到一个角色中,如下所示(注意,我在我的机器上运行了下面的代码):
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对象仅在Application_AuthenticateRequest
上注入到HttpContext.Current.User
。
因此,您必须等待下一个请求才能访问Roles.IsUserInRole("Role1")
。
确保cacheRolesInCookie
设置为false,因为它有一些问题。
<roleManager enabled="true" cacheRolesInCookie="false"
defaultProvider="DefaultRoleProvider">
....
</roleManager>
我认为应该是User.IsInRole
而不是Roles.IsUserInRole
,或者通过传递Roles.IsUserInRole(User.Identity.Name,"Role1")
来明确指定用户名作为参数
角色。IsUserInRole带一个参数,为用户名调用GetCurrentUser(),该用户名将从CurrentPrincipal中拉出它。听起来好像您当前登录的用户与当前主体上的用户不同。