3

私は以下のようなコントローラーを書きます:

public class AccountController : Controller
{
    public ActionResult Login(/*---*/)
    {
        GenericIdentity identity = new GenericIdentity("userName");
        GenericPrincipal principal = new GenericPrincipal(identity, new string[] { "role1", "role2" });
        this.HttpContext.User = principal;
        /*---*/;
    }
}

ログイン後、他のコントローラーのUser.Identity.Nameでユーザー名を取得できます。ただし、User.IsInRole( "role1")は常にfalseを返します。

どうすればユーザーに値を割り当てることができますか、メンバーシップを使用したくありません...

4

2 に答える 2

5

後続のすべてのページリクエストがユーザーデータにアクセスできるように、ユーザーデータをどこかに永続化する必要があります。通常、認証チケットを作成してCookieに保存します。次に、リクエストごとにデータを抽出し、IPrincipalを作成します。これはApplication_AuthenticateRequest、Global.ascxのメソッドで実行できます。

MVC-認証されたユーザーのロールを保存/割り当てる方法には、必要なことを行う簡単な方法に関する詳細情報があります。

于 2010-03-09T13:46:45.230 に答える
1

うーん。

メンバーシップを使用していますか?

少なくとも下位レベルのAPI。何らかのイベントでプリンシパルを割り当てる必要があります(これは基本的にCookieになり、呼び出しごとに逆シリアル化されます)。

詳細はhttp://support.microsoft.com/kb/306590にあります

または、 http://msdn.microsoft.com/en-us/library/aa302399.aspxにもあります

于 2010-03-09T12:34:06.250 に答える