1

トークン、roleprovider、membershipproviderを使用してMVCアプリケーションを保護する例をいくつか見てきましたが、私のシナリオに完全に適合するものはありません。これが私の設定です。

  • EntityFramework4.3を使用してSQL2008R2にリンクされたVS2012はデータを管理します。
  • プロジェクトはIISで基本認証用に設定されているため、empIDを持つすべてのスタッフ、教職員、および学生は、内部または外部で認証できます。これらの人々の一部は管理者であるため、管理エリアで管理されます。
  • プロジェクト内に現在セキュリティがない「管理者」領域を作成したので、誰でもdomain / adminと入力して、その領域にリダイレクトできます。この領域には、管理者(CRUD)、予定(CRUD)、設定(U)、ツール、およびレポート機能が含まれています。adminUserセクションと予定セクションには独自のテーブルがあり、CRUDは期待どおりに機能しています。

これが私が求めていることです。AdminUsersSQLテーブルの「Admins」に対して基本認証の現在のユーザーを検証し、これらのユーザーにのみ私の管理領域へのアクセスを許可するにはどうすればよいですか。

お時間をいただきありがとうございます、クリス

4

1 に答える 1

4

メンバーシップやロールに依存しない場合はAuthorizeAttribute、データベースに対してユーザーをチェックするのカスタム実装をいつでも作成できます。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AdminOnlyAttribute : AuthorizeAttribute
{
    public AdminOnlyAttribute()
    {
    }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (!User not in Admin table)
        {
          throw new UnauthorizedAccessException();
        }
        base.OnAuthorization(filterContext);
    }
}

またはそのようなもの。そしてもちろん:

[AdminOnly]
public class AdminController : Controller
{
    // ...
}
于 2012-12-21T15:45:49.280 に答える