24

ASP.NET MVC 4とC#を使用してWebアプリケーションを作成しています。

アプリケーションを使用する前に、すべてのユーザーがログインするようにします。

カスタムデータベースでASP.NETメンバーシップを使用しています。

1つの方法はMembership.GetUser()、すべての関数でnullかどうかを確認することです。

しかし、すべての機能でユーザーのログイン状態をチェックするよりも簡単な方法はありませんか?(多分web.config、global.asaxなどをチェックインしています... ??)

4

6 に答える 6

53

確かに、アクションまたはクラス全体をで装飾する[Authorize]と、ユーザーが最初にログインする必要があります。

于 2012-07-26T15:21:59.530 に答える
13

ログイン[Authorize]しているユーザーだけがアクセスする各アクションを上書きします。これをコントローラーレベルで実行して、コントローラー内のすべてのアクションを保護することもできます。おそらく、ゲストに対してすべてのページを無効にするだけなので、後者がおそらく最適です。

クラスレベルのものは次のようになります。

[Authorize]
public class SomethingController
{
    //...
}

これがアクションレベルのものです:

public class SomethingController
{
    [Authorize]
    public ActionResult SomeAction(Parameter someParameter)
    {
        //...   
    }
}

すべてまたはほとんどのページが同じマスターページを使用している場合、それを行う別の方法は次のようになります。

<script type="text/javascript>
    @if(!Request.IsAuthenticated) {
        window.location.href = redirectURL;
    }
</script>

または、かみそりの構文を使用していない場合は、

<script type="text/javascript>  
    <% if(!Request.IsAuthenticated) { %>
        window.location.href = redirectURL;
    <% } %>
</script>

マスターページで。そうすれば、ユーザーがログインしていない場合、そのマスターページを使用するすべてのページが別の場所にリダイレクトされます。ただし、これは、組み込みの認証を使用している場合にのみ適用されます。 注:このオプションは、最初のオプションよりもはるかに安全性が低くなります。これは、サイトのセキュリティが大きな問題ではない場合にのみ使用してください

于 2012-07-26T15:31:31.957 に答える
6

私はこの質問にすでに答えがあることを知っていますが、選択したいくつかのコントローラーアクションを除いてアプリ全体をロックダウンすることが意図されている場合は、これがより良い解決策だと思います...

アプリのスタートアップ/初期化で追加...

httpConfig.filters.Add(new AuthorizeAttribute());

...次に、保護したくないアクションについて...

[AllowAnonymous]
public ActionResult Hello() { return View(); }
于 2017-09-13T10:04:43.663 に答える
4

[Authorize]カスタム属性を書くことができます。次に、コントローラー/アクションをそれで装飾するか、すべてのアクションに承認が必要な場合は、グローバルアクションフィルターとして登録できます。

于 2012-07-26T15:22:06.867 に答える
4

[Authorize]コントローラまたはコントローラの単一のメソッドに属性を設定できるため、アクションを開くことができるユーザーと権限を選択できます。次のような役割で承認することもできます。[Authorize(Roles="Admin")]ここで、管理者役割のユーザーのみにアクション/コントローラーへのアクセスを承認します。例えば:

[Authorize(Roles="SimpleUser")] or with no roles [Authorize]
public ActionResult Index()
{
    return View();
}

[Authorize]
[HttpPost]
public ActionResult Index(FormCollection form)
{
    ... whatever logic
    return View();
}

お役に立てれば ;]

于 2013-12-03T21:46:23.907 に答える
2

クラスレベルで[承認]を使用する

一部のアクションへの匿名アクセスを許可する場合は、[AllowAnonymous]を使用してください

于 2013-06-24T06:26:46.887 に答える