0

私は最初の ASP.Net MVC 4 アプリケーションに取り組んでおり、現在 1 つの単純なユース ケースに固執しています。

特定のタスクを実行するために管理エリアにログインできるように、1 人のユーザー (管理者) を認証する必要があります。ASP.Net インターネット プロジェクト テンプレートには単純なメンバーシップを使用するアカウント コントローラーがありますが、実際に必要なもの以上のものがあるようです。たとえば、ユーザー登録機能とユーザー ロールはあまり必要ありません。私の要件は非常に単純です。1 人のユーザーをデータベースに保存し、パスワード、電子メールなどの情報を更新するオプションを彼に与え、管理領域 (管理コントローラーとアクション) へのアクセスを許可するだけです。私が理解できないのは

  1. シンプルなメンバーシップまたは他の asp.net メンバーシップ プロバイダーは、この単純なシナリオの唯一のオプションです。
  2. そうでない場合、[Authorize]管理アクションを保護するために使用する他のオプションはありますか
4

1 に答える 1

1

カスタム メソッドを作成して、ユーザーとその保存されたロールを取得し、コントローラーで評価することができます。たとえば、次のようになります。

public ActionResult GetAdminPage()
{
    var loggedInUserName = HttpContext.User.Identity.Name;
    var user = somesortofproviderlookupmethod(loggedInUserName);

    // Assume user is a bool and is true
    if (user)
    {
        return view("AdminPage");
    }
}

私が確信していない唯一のことは、HttpContext.User がメンバーシップを必要とするかどうかです。おそらく誰かが光を当てることができます。その場合、おそらくビューからユーザー名を送信できますが、もちろん、クライアントを信頼しています。したがって、ユーザー認証をどのように行っているかによって、この答えが多少変わります。

個人的にはメンバーシップが好きです。クリーンで、簡単で、高速で、追加の要件が発生した場合に適切にスケーリングできます。メンバーシップを使用すると、実際に Roles.GetRolesForUser(); を使用できるため、このようなことを行うのはさらに簡単になります。探しているロールが含まれている場合にのみ管理ビューを返します。

于 2013-01-21T19:44:05.413 に答える