0

認証に関するビューを表示する場合(訪問者がユーザーであるかどうかに応じて表示されるビュー)。私は多くの選択に直面しています。だから私はそのような状況に対処する方法を教えてくれるあなたの助けが必要です:

  • 2 つのビュー (1 つはユーザー用、もう 1 つは訪問者用)、または 1 つのビューのみを使用します。
  • 2 つのアクション (1 つは承認フィルターあり、もう 1 つはフィルターなし)、または 1 つのアクションのみを使用します。

そして、なぜあなたが提案する選択肢が優れているのですか?

4

1 に答える 1

0

Authorize属性を使用しない必要はありません。主な機能はUser、コンテキストで をセットアップすることであり、デフォルトでは、ログインしていることも確認します。ただし、この最後の部分は、AllowAnonymous属性を使用してオーバーライドすることもできます。

[Authorize]
[AllowAnonymous]
public ActionResult SomeView()
{
    ...
}

これで、ビューUserで遊ぶことができ、認証ステータスに基づいて、それを使用してビューのさまざまな部分を動的に表示できます。

@if (User.IsAuthenticated)
{
    <p>Logged in</p>
}
else
{
    <p>Anonymous</p>
}

編集(明確化のため)

このAuthorize属性は、実際には 2 つの異なることを行います。最初に、ユーザーを認識するためのすべての機構をセットアップします。Cookie などを読み取り、認証ステータスをチェックし、認証されているかどうか、ユーザーの情報を取り込みます。次に、ユーザーが実際にログインしていることを検証します。AllowAnonymousこの 2 番目の部分をスキップし、ログインしているかどうかに関係なく、誰でもビューにアクセスできるようにします。

つまり、 と の両方の属性を一緒に使用AuthorizeするAllowAnonymousことは、基本的に、「ユーザーがログインしているかどうかを確認しますが、このビューにアクセスする必要はありません」ということです。これにより、匿名ユーザーは引き続きページにアクセスできますが、実際にログインしているユーザーに独自のコンテンツまたは異なるコンテンツを配信することができます.

于 2013-02-14T16:39:26.980 に答える