【发布时间】:2012-02-09 16:13:08
【问题描述】:
我已经为一个项目实现了一个自定义 RoleProvider。 RoleProvider 有效,但我用来获取用户角色的存储库仅在构建后填充。当我注销时,更改用户的角色,再次登录,用户仍然拥有旧角色。
public class CmsRoleProvider : RoleProvider
{
private EntityDB _db { get; set; }
public CmsRoleProvider()
{
_db = new EntityDB();
}
public override string[] GetRolesForUser(string username)
{
var user = _db.Users.Where(u => u.EmailAddress == username).SingleOrDefault();
var roles = user.UserRoles.Select(u => u.Role.Name).ToList<string>();
return roles.ToArray();
}
}
在上面的示例中,用户只有在构建项目后才能获得正确的角色。当我在 GetRolesForUser 函数中创建存储库时,它工作正常。
是否存在缓存问题?谁能帮帮我。
【问题讨论】:
-
您如何以及在何处更改用户角色?
-
我直接在数据库中添加或删除角色。
-
所以,看看我的回答,你就会明白,如果没有,告诉我你不明白的地方。 =)
标签: asp.net-mvc entity-framework roleprovider