我爲項目實現了一個自定義RoleProvider。 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函數中創建存儲庫時,它工作正常。
是否存在緩存問題?誰可以幫助我。
如何以及在哪裏更改用戶角色? – 2012-02-09 16:17:35
我直接在數據庫中添加或刪除角色。 – jpderooy 2012-02-09 16:29:25
所以,請看我的回答,你會明白,如果沒有,告訴我你不明白。 =) – 2012-02-09 16:36:16