プロジェクト用にカスタム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関数内でリポジトリを作成すると、正常に動作します。
キャッシュの問題は解決しましたか?誰がこれで私を助けることができます。
どのようにユーザーの役割を変更していますか? –
データベースに直接ロールを追加または削除します。 – jpderooy
だから、私の答えを見て、理解していない場合は、あなたが理解していないことを教えてください。 =) –