我的FormsAuthentication有问题,出于某些原因,我试图给我的用户提供角色我得到错误“找不到用户'X'。”这个错误毫无意义,因为我之前刚刚为用户添加了该行。
以下代码
FormsAuthentication.SetAuthCookie(member.Id.ToString(), true);
Roles.AddUserToRole(member.Id.ToString(), "Admin");
给我错误(member.Id为3)
The user '3' was not found
编辑:用户名不能用作用户名,只需要匹配我在FormsAuthentication中设置的用户名!改为使用用户ID(转换为字符串)是一种实践做法!但是这个剂量仍然没有改变我的问题,所以我的用户名字是“3”!
这是在用户登录时完成的:
// Set roles
foreach(var r in Roles.GetRolesForUser(user.Id.ToString()))
Roles.RemoveUserFromRole(user.Id.ToString(), r);
IList<UserRole> roles = _usersServices.GetUserRoles((int)user.Id);
foreach (var userRole in roles)
{
if(userRole.Expires == null || userRole.Expires > DateTime.Now)
{
if(!Roles.RoleExists(userRole.Name))
Roles.CreateRole(userRole.Name);
Roles.AddUserToRole(user.Id.ToString(), userRole.Name);
}
}
解决方案:问题是我忘了在我的web.config中设置roleManager,所以即使我在userlogin上填充了我的值,它们也无处可存储!
答案 0 :(得分:1)
这很有趣。 Roles.AddUserToRole
采用字符串(username
)和角色(rolename
)。您正确地将角色作为字符串传递,但错误地传递了userid
而不是用户名。
更改您的代码:
Roles.AddUserToRole({username}, "Admin");
答案 1 :(得分:0)
我遇到了同样的问题。我更改了 Web.Config 中某些属性的 applicationName 值。如果更改了它,则必须更改所有应用程序变量值。
我改变了一切,现在没事了。
答案 2 :(得分:-1)
我在web.config
更改了我的角色管理员,现在可以了。
是:
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<add
name="DefaultRoleProvider"
type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
connectionStringName="DefaultConnection"
applicationName="/" />
</providers>
</roleManager>
现在是:
<roleManager
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPXROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All"
defaultProvider="AspNetSqlRoleProvider"
createPersistentCookie="false"
maxCachedResults="25" />