0

ASP.Net MVC でクラウド アプリケーションを開発しています。ログインシステムの実装に問題があります。

私がしたことWebユーザーのログイン
に使用しました。 そしてそのようなコントローラーでFormsAuthentication.SetAuthCookie(...)
Authorize

  [Authorize]
  [HttpGet]
  public ActionResult AdminPage(){...}

問題は
Websign inユーザーcredentialsが管理コントローラーにアクセスしようとすると、そのユーザーを止めるものは何もなく、ユーザーはすべて (管理ページを含む) にアクセスできます。

これに取り組むには、どのタイプのログイン実装を使用する必要がありますか。覚えておいてくださいsecurity

私も見ましASP.Net MemberShip Classたが、データベースを独自に生成します。それは金型であり、ユーザー定義データベースでうまく機能しますか。

4

3 に答える 3

1

Colin Bacon の答えを盗みたいとは思いません。代わりに、追加情報を追加します。セカンドオピニオンが害にならないことを願っています。

[Authorize(Roles = "Admin")]次のようにのみ管理者ロールへのアクセスを制限する必要があります-

[Authorize(Roles = "Admin")]
public ActionResult AdminPage(){...}

MVC アプリケーションは既に FormsAuthenticationを使用しているため、 MembershipProvider を使用する必要はありません

ただし、カスタム ロール プロバイダーを実装し、GetRolesForUserメソッドをオーバーライドする必要があります(残りのメソッドはオプションです)

基本的に AuthorizeAttribute は、ユーザーが でアクションにアクセスしたときに GetRolesForUser メソッドを呼び出します[Authorize(Roles = "Admin")]

public class CustomRoleProvider : RoleProvider
{
    public override string[] GetRolesForUser(string username)
    {
        // Query admin table.
        if(user is in admin table)
            return new[] {"Admin"}; 

        return new[] {};            
    }

    ....
}
于 2013-09-09T18:08:34.617 に答える