0

ログインもあるasp.netmvc3を使用してWebアプリケーションを作成しています。

このサイトを使用するユーザーには、管理者、オペレーター、ディストリビューターの3種類があります。

ディストリビューターがWebサイトの管理者およびオペレーターの部分にアクセスすることを制限するログインを作成するにはどうすればよいですか。同様に、オペレーターは管理者とディストリビューターの部分にアクセスできないようにする必要があります。また、管理者は他のタイプのユーザーの部分にアクセスできないようにする必要があります。つまり、サイトは、ログイン後に管理者タイプのユーザーをWebサイトの自分の部分にリダイレクトする必要があります。

そして最後に、誰もログインせずにWebサイトの自分の部分にアクセスできないようにする必要があります。

誰か助けてくれませんか。

4

1 に答える 1

3

ASP.NETのメンバーシップモデルを調べます。このモデルは、Webアプリケーションのさまざまな部分のユーザーを認証および承認するために使用されます。

メンバーシップモデルを使用して、アプリケーション内で管理者、オペレーター、ディストリビューターの3つの役割を定義します。もちろん、アプリケーション内にユーザーを作成し、それらをこれらの役割に分割します。

最後は、実際の認証と承認です。Authorize属性を使用して、ユーザーがWebサイトの特定の部分にアクセスするために必要な役割を定義します。

[Authorize(Roles = "Operator")]
public ActionResult OperatorOnlyStuff()
{
    return View();
}

また、ユーザーがログインしてサイト上のあらゆるものにアクセスできるようにするには、カスタム認証済みルート制約を定義します。

public class AuthenticatedRouteConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return httpContext.Request.IsAuthenticated;
    }
}

そして、デフォルトルートでこのカスタム認証されたルート制約を使用します。

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new { isAuthenticated = new AuthenticatedConstraint()}
);
于 2012-08-06T13:29:26.863 に答える