-4

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

4

3 回答 3

1

这是有趣的。Roles.AddUserToRole接受一个字符串 ( username) 和一个角色 ( rolename)。您正确地将角色作为字符串传递,但错误地传递userid了用户名而不是用户名。

更改您的代码:

Roles.AddUserToRole({username}, "Admin");
于 2013-02-07T01:32:32.293 回答
0

我有同样的问题。我在Web.Config中更改了某些属性的applicationName值。如果您更改了它,那么您必须更改所有应用程序变量值。

我把它们都改了,现在可以了。

于 2016-02-28T13:22:21.890 回答
-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" />
于 2013-02-08T10:35:29.133 回答