3

asp.netmvcアプリケーションがあります。ログインページ(匿名)を除いて、認証(承認属性)の後でのみ、asp.netmvcアプリケーションですべてのページにアクセスできます。ログインページには、新しいユーザーの登録リンクがあります。特定のユーザーまたは特定の役割のみがアクセスできるように登録リンクを制限するにはどうすればよいですか。

全員が[登録]ページを使用してユーザー名とパスワードを作成することは望ましくありません。

これは、ASP.NETMVC認証でどのように可能になりますか。アプリケーションでは、標準のSQLメンバーシップとロールプロバイダーを使用しています。

4

1 に答える 1

5

ビューにアクセスするためにユーザーがログインしていることを確認する

これを実現する最も簡単な方法は、コントローラーのアクションメソッドの上にあるAuthorize属性を使用することです。たとえば、ユーザーがすでにサイトにログインしている場合にのみ、ユーザーがパスワードを変更できるようにします。許可されていないユーザーがパスワード変更ビューに到達するのを防ぐために、次のようにアクセスを制限できます。

[Authorize]
public ActionResult ChangePassword()
{
    ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
    return View();
}

次のようにUserオブジェクトをチェックすることにより、これを手動で実行することもできます。

public ActionResult ChangePassword()

    {
        if (!User.Identity.IsAuthenticated)
            return RedirectToAction("LogOn", "Account");

        ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
        return View();
    }


ビューにアクセスするためにユーザーが特定のロールに属していることを確認

する特定のロールのユーザーのみがアクセスできるビューがある場合があります。これは、次のようなAuthorize属性を使用して実行することもできます。

[Authorize(Roles = "Administrator")]
public ActionResult Index()
{
    return View();
}

次の方法を使用して、コードでもこれを実行できます。

public ActionResult Index()
{
    if (!User.IsInRole("Administrator"))
        return RedirectToAction("LogOn", "Account");

    return View();
}

参照:ロールプロバイダーとメンバーシッププロバイダーの使用

于 2013-03-05T03:03:05.100 に答える