2016-08-18 3 views
2

私は2人のユーザーグループを持ち、1人のグループは雇用されており、1人のグループが雇用されています。正しく[承認]を使用する方法

各グループの特定のページへのアクセスを制限したいのですが、コントローラで[Authorize]を使用すると、どのグループから区別しなくてもログインしているユーザーにアクセスできますか?

[HttpPost] 
     public ActionResult Signin(string username, string password) 
     { 
      var mgr = new Cleaners.Models.UserManager(@"Data Source=.\sqlexpress;Initial Catalog='Cleaning Lady';Integrated Security=True"); 
      var user = mgr.GetUser(username, password); 
      if (user == null) 
      { 
       return View(new UserViewModel { Name = username }); 
      } 

      FormsAuthentication.SetAuthCookie(user.UserName, true); 
      UserViewModel.IsAuthenticated = User.Identity.IsAuthenticated; 
      return RedirectToAction("Private"); 
     } 

     [Authorize] 
     public ActionResult Private() 
     { 
      return View(); 

     } 

このコントローラで確認されたユーザーに「プライベート」へのアクセスを制限する方法はありますか?

[Authorize(Roles="Contractor")] 
    public ActionResult Private() 
    { 
     return View(); 

    } 

これは、現在のユーザ/アイデンティティが契約という名前の役割を持っているかどうかをチェックします:

+0

アイデンティティーロールを使用し、それに基づいて認証することができます。 – Andrew

+1

model-view-controllerタグは、パターンに関する質問用です。 ASP.NET-MVCの実装には特定のタグがあります。 –

答えて

2

私は簡単な例を与えています。

this articleを読んで、その基本を理解することをお勧めします。

+0

これに加えて、独自のカスタムAuthorize Attributeを作成してAuthorizeクラスを拡張し、必要に応じて権限をチェックすることができます。 https://msdn.microsoft.com/en-us/library/ee707357%28v=vs.91%29.aspx?f=255&MSPPError=-2147217396 –

+0

また、私たち自身で 'IUserStore'を実装し、カスタムロジックを実装することもできます。ユーザーがプロファイルを持つグループに属していて、プロファイルがロールを持っている(非常に細かい)状況がありました。これは素晴らしいことです.Web APIを使用している場合は、両方の認証を実装する必要がなくなります(これはもうCore 1.0の問題ではありません)。 – Alisson

+0

ありがとう! @ Alissonはデータベースに自分の役割をどのように格納するのか、それらの情報にアクセスするためにその情報を引き出す方法を簡単に説明できますか?ありがとう! –

関連する問題