我的 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,所以即使我在用户登录时填充了我的值,它们是否无处可存储!