0

単一のコントローラー内のすべてのアクションを表示するには、ユーザーにログインを要求する必要があります。IDを維持する必要がないので、共有のログインとパスワードを使用します。

つまり、Webサイトの特定の領域にアクセスする必要があるユーザーグループがあります。それらすべてに同じログインとパスワード(たとえば、「username」と「passw0rd」)を与えたいと思います。

この単純認証は、そのコントローラー内でのみ機能する必要があり、Webサイトの他の部分に影響を与えることはありません。また、Webサイトの管理領域でフォーム認証が機能していることを覚えておいてください。上記のユーザーのグループは、コントローラー内でサンドボックス化する必要があるため、管理者ログインページは表示されません。

それを達成するための最良の方法は何ですか?多分私は間違った方向に考えていて、いくつかの異なる解決策がありますか?

4

2 に答える 2

1

アプリですでにフォーム認証を使用している場合は、すべての新しいユーザー用に別のユーザーアカウントを作成し、管理者共有ユーザーの2つの役割を作成するだけです。

次に、コントローラーに属性を追加Authorizeします。

[Authorize(Roles="Shared Users")

まだ存在しない場合は、管理領域に管理者の役割を追加します

[Authorize(Roles="Admin")
于 2012-11-29T13:37:18.810 に答える
1

クレデンシャルはweb.configファイルに保存できます。クレデンシャルを暗号化されたものとしてweb.configに保存することもできることに注意してください。

<authentication mode="Forms">
  <forms timeout="30" loginUrl="~/Admin/Login">
    <credentials passwordFormat="Clear">
      <user name="user" password="password"/>
    </credentials>
  </forms>
</authentication>

この方法を使用してユーザーを認証できますFormsAuthentication.Authenticate

例:

[HttpPost]
public ActionResult Login(string name, string password, string returnUrl)
{
   if (FormsAuthentication.Authenticate(name, password))
   {
       FormsAuthentication.SetAuthCookie(name, false);
       return Redirect(!string.IsNullOrEmpty(returnUrl) ? returnUrl : Url.Action("Manage", "Admin"));
   }
   else
       return View();
}

Authorize組み込み属性を使用して、アクションを許可する必要があるコントローラーにマークを付けることができます。

于 2012-11-29T14:51:27.560 に答える