2017-01-03 6 views
-2

私はASP.NETコアRazorエンジンを使用しています。ユーザーが他のページ(cshtmlファイル)に移動した場合は、インデックスページの他にインデックスページにリダイレクトされていることを確認したい。インデックスページ以外のページからユーザーをリダイレクトする

インデックスページはユーザーがログインする場所です。私の戦略はで、各ページにユーザーのファーストネームを表示しますファーストネームがnullの場合インデックスページにリダイレクトします。

私はリダイレクトする方法に問題がありますか、これを行うにはより良い方法がありますか?

<h1>Hello @TempData["first_name"] @TempData["last_name"]</h1> 
@if(TempData["first_name"]!= null) 
{ 
    @{Response.Redirect("~/Index"); 
} 
+0

しないでください。代わりに、アクションフィルタを使用します。 – SLaks

+1

*表示*からリダイレクトしないで、*コントローラ*からリダイレクトします。また、同じリダイレクトロジックを複数の場所で実行したい場合(この場合は同じように聞こえる)、ミドルウェアにさらに普遍的なもの(上記のようにアクションフィルタ)を追加して、デフォルトで実行されるようにすることができますすべての行動について – David

+0

@Aaronどのようにユーザーを認証しますか? – Win

答えて

1

使用forms authenticationと組み合わせるAuthorizeAttribute

は、ここに私のコードです。

あなたはAuthorizeAttributeでアクションメソッドをマークするとAuthorizeAttribute

を使用すると、そのアクションメソッドへのアクセスは、両方の認証および承認されたユーザに制限されています。属性を持つコントローラをマークすると、コントローラ内のすべてのアクションメソッドが制限されます。 AuthorizeAttribute属性でマークされたコントローラ内で、AllowAnonymousAttribute属性を使用して、特定のアクションメソッドが承認されたユーザーだけに限定されないように指定できます。

Authorize属性を使用すると、認可が事前定義されたロールまたは個々のユーザーに限定されていることを示すことができます。 RolesおよびUsersプロパティを使用して、アクションメソッドへのアクセスを許可するロールまたはユーザーを指定します。これにより、サイト上の任意のページを閲覧する権限を持つユーザーを高度に制御できます。

権限のないユーザーがAuthorize属性でマークされたメソッドにアクセスしようとすると、MVCフレームワークは401 HTTPステータスコードを返します。サイトがASP.NETフォーム認証を使用するように構成されている場合、401ステータスコードにより、ブラウザはユーザーをログインページにリダイレクトします。

関連する問題