0

ユーザーアクセスの検証に使用するのに適したパターンを見つけようとしています。

基本的に、Webフォームアプリケーションでは、ユーザーロールを使用してアクセスを定義するフレームワークがありました。つまり、ユーザーはロールに割り当てられ、「ページ」にはページへのアクセスが許可されました。データベースに、すべてのページがリストされたテーブルがありました。ページには、親から継承されたアクセス権を持つ子ページを含めることができます。

アクセスを定義するときに、ページへのアクセスをロールに割り当てました。その後、その役割のユーザーはページにアクセスできました。管理もかなり簡単です。これを実装する方法は、すべてのページが継承する基本クラスでした。pageload / initで、ページのURLを確認し、アクセスを検証して適切に動作します。

ただし、現在MVCアプリケーションに取り組んでおり、同様の何かを実装する必要がありますが、以前のソリューションを機能させるための良い方法を見つけることができません。純粋に、URLパスとして静的ページがないためです。また、aspxページではなくコントローラーを使用しているため、これにどのようにアプローチするのが最適かわかりません。

MVCSitemapproviderを見ましたが、データベースでは機能しません。サイトマップファイルが必要です。その場でユーザー権限の変更を制御する必要があります。

任意の考え/提案/ポインタをいただければ幸いです。

4

2 に答える 2

1

空白のWebサイトではなくMVCアプリケーションを作成する場合、基本的なASP.NETメンバーシッププロバイダーが含まれています。それはあなたが探しているすべてを行い、コーディングはほとんどまたはまったくありません。

これがMSDNです:http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

これは、組み込みのものよりも機能を拡張するCodePlexプロジェクトです:http://mvcmembership.codeplex.com/

于 2010-03-25T01:15:49.703 に答える
0

独自のActionFilterを作成することで、テクニックを簡単に実現できます:http: //msdn.microsoft.com/en-us/library/dd410056.aspx

次に、この属性をコントローラーまたはアクションメソッドに適用して、独自のページセキュリティを非常に簡単にロールできます。

public class MinmalSecurity : ActionFilterAttribute
{
    private string _roles;
    public MinmalSecurity(string roles)
    {
        _roles = roles;
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //go to database,find permissions, redirect or proceed as nescessary

        base.OnActionExecuting(filterContext);
    }
}
于 2010-03-25T02:35:31.780 に答える