2011-07-21 3 views
15

私はASP.NETの初心者です。認証されていないユーザーをサイトの任意のページからログオンページに簡単にリダイレクトする方法を探しています。別のオプションがある場合は、次のコードをすべてのHTTP GET関数に入れない方がよいでしょう。MVC 3で認証されていないと簡単にリダイレクトする方法は?

if (!Request.IsAuthenticated) 
{ 
    return RedirectToAction("LogOn", "Account"); 
} 

答えて

30

マーク[Authorize]属性http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

あなたはフォーム認証を持っている必要があり、デフォルトでは、あなたのweb.configファイルを参照してくださいとあなたのコントローラauthentication mode="Forms"http://msdn.microsoft.com/en-us/library/eeyk640h.aspx

オンまた、この質問ASP.NET MVC Authorization

を見て私は、カスタム認証を使用していますが、

<!-- using custom auth with MVC redirect --> 
<authentication mode="None"> 
    <forms loginUrl="~/Home/Index"/> 
</authentication> 

と、それはまだ動作します:場合

カスタム動作を許可しているしたい場合は、私はちょうどこれを試してみましたCustomizing authorization in ASP.NET MVC

12

[Authorize]属性は、認証が必要な各処理に設定できます。

また、このセクションはあなたのWeb.Configで定義されていることを確認してください:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 
+1

正確に正しい、とだけ明確にする - このconfigセクションを配置する必要があります"system.web"内にあります。 – tltjr

3

ここを見て。ただし、タイムアウトについてはわかりません - [Authorize]はForms Authに対してデフォルトのものを使用するか、タイムアウトをまったく管理しません(カスタム認証の場合の推奨動作)。

0

以下のコードスニペットを使用して、リダイレクト文を記述する必要がない非常にエレガントであることがわかりました。 MVCは、フォーム上のページ構成にログインし、成功したログイン/登録時に、ユーザーが戻って最初のリクエストされたページに送信されます基づいて、リダイレクトの面倒を

if (!User.Identity.IsAuthenticated) 
{ 
    //return new HttpUnauthorizedResult(); //This or the below statement should redirect the user to forms login page 
    return new HttpStatusCodeResult(System.Net.HttpStatusCode.Unauthorized); 
} 
関連する問題