2011-10-01 9 views
6

私はAsp.Net MVC 3アプリケーションで作業しています。私はウェブサイトの管理領域を作成し、ログイン後にactionmethodsに[Authorized]属性を適用しました。 admin/homeやadmin/productlistのようなログインなしでこれらのURLに直接アクセスしようとすると、認証エラーで/ Home/Loginにリダイレクトされます。私はAdmin/Loginにリダイレクトしたい。ログインURLをasp.netで承認するMVC 3

お勧めします。 おかげ

+0

は、あなたがこの回答を見てきました:http://stackoverflow.com/questions/6447728/formsauthentication-loginurl/6452419#6452419 – frennky

答えて

7

(MVC3のものを含む)ASP.NETアプリケーションのログインURLは、フォーム認証]セクションで、web.configファイルで制御されます。

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Home/Login" timeout="2880" /> 
    </authentication> 
    </system.web> 
</configuration> 

あなたのためのトリックを使用すると、2回の異なるログインをしたいということですURL。 ASP.NETには、プロジェクトの各ディレクトリにweb.configファイルを置くことができる素晴らしい機能があります。必要に応じて、Web.configのルートまで見つけることができる最も具体的な設定を使用します。したがって、管理者ビュー(私が推測している管理者)があるフォルダでは、2番目のweb.configを作成できます。これらのページにのみ適用されます。

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Admin/Login" timeout="2880" /> 
    </authentication> 
    </system.web> 
</configuration> 
+0

これは本当に動作しますか? http://stackoverflow.com/a/749257/205859 –

0

これらの問題を処理するために、承認アクションフィルタを上書きすることができます。たとえば、ロールだけでなく特定の権限をチェックし、別のURLにリダイレクトすることもできます。また、この方法を使用すると、ルーティング設定を考慮に入れることができます。
は、この答えを見てみましょう:asp.net mvc Adding to the AUTHORIZE attribute

+0

このように見えるKISSメソッドを回避します。提案されたソリューションをWebファイルにドロップすると、迅速かつきれいにルーティングの問題が処理されます。 – Skindeep2366

8

これは証券MVC 3認可のであれば、自分自身だけでなく、他の多くは、いくつかのために...「ログオン」アクションのために設定されている間違ったURLアドレスに問題がありました理由は、アカウント\ログインにユーザーを送信しようとしているとアカウントビューを見て実際にはない "ログイン"ビューは、 "ログオン"と呼ばれるので、これをWeb.configファイルで次のように修正する必要があります:

   <add key="loginUrl" value="~/Account/LogOn" /> 
+1

はい、はい、はい! – contactmatt

関連する問題