0

ほとんどの場合、認証なしでアクセスされるASP.NETMVC4Webページがあります。管理者専用アクセス用に保護したい単一のページがあります(具体的には、ELMAHのエラーログ)。管理者ログインは1回だけで済むので、ユーザー/パスワードデータベースの管理が複雑になるのを避けたいと思います。

調査を行ったところ、以前のバージョンのASP.NETでは、web.configで暗号化されたパスワードを使用してフォーム認証を使用できることがわかりました。

<forms loginUrl="Admin" name=".ASPXFORMSAUTH">
  <credentials passwordFormat="SHA1">
    <user name="admin" password="encryptedPassword" />
  </credentials>
</forms>

次に、認証コントローラーはとを使用FormsAuthentication.AuthenticateFormsAuthentication.RedirectFromLoginPageて、入力された資格情報を検証します。ただし、次の理由により、このソリューションの使用を躊躇しています。

  1. FormsAuthentication.AuthenticateAPIは廃止されました。
  2. FormsAuthentication.RedirectFromLoginPageを返すのではなく、ユーザーを直接リダイレクトしますRedirectResult。これはMVCコントローラーパイプラインに従わないため、単体テストなどはより困難になります。

MSDNのサンプルとデフォルトのテンプレートを見ると、WebMatrixのWebSecurity.LoginAPIがMVCアプリケーションでフォーム認証を行うための新しい標準であるように見えます。しかし、ローカル(つまり構成ベース)の認証プロバイダーを使用する方法が見つかりませんでした。

ローカル認証を行うための推奨される方法はありますか、それともこれは悪い習慣と見なされますか?外部の依存関係を利用せずに管理者認証を提供する最も簡単な方法は何ですか?

4

1 に答える 1

1

WebSecurity.Login認証の「新しい標準」ではありません。それは、新しい「初心者に優しい標準」のようなものです。WebSecurityはSimpleMembershipのみを実際にサポートし、それは単純なアプリケーション用に設計されています。

FormsAuthentication.Authenticate長い間良い選択ではなかったので、現在正式に非推奨になっているという事実は大したことではありません。

とにかくMembershipを使用している可能性があり、Membership.ValidateUserを使用して資格情報を検証する必要があります。または、WindowsIdentityFoundationなどを使用します。

于 2013-02-20T03:42:07.487 に答える