2011-06-24 1 views
3

私は領域を持つ新しいASP.NET MVCプロジェクトを作成しました。ユーザーがその領域にアクセスすると、コントローラのアクションをデフォルトコントローラアクションに設定しようとしています。エリアのデフォルトコントローラとアクションを設定するためにASP.NET MVCを取得するにはどうすればよいですか?

「ログイン」という領域を追加しました。現在はAreas/Login/で、LoginControllerを追加しました。

ユーザーがウェブサイトに移動したときに呼び出されるようにこのコントローラを設定しようとしています。 ブラウザにwww.test.com/Login/Loginと入力すればアクセスできますが、global.asaxのルーティングをデフォルトとしてこのコントローラを指すように設定する方法がわかりません。

ASP.NET MVCでどうすればいいですか?

+0

チェック:http://stackoverflow.com/questions/2140208/how-to-set-aデフォルトで使用したいコントローラ名(ログイン)デフォルトパラメータのcontroller =部分を変更します-default-route-to-an-mvc –

答えて

5

領域を作成したときに、MVCはAreas/[AreaName]フォルダの下に[AreaName]AreaRegistrationクラスを作成しませんでしたか?ここには、これに似たエリア登録があります。ここ

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Login_default", 
      "Login/{controller}/{action}/{id}", 
      new { controller = "Login", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
+0

コントローラが問題だった、ありがとう。 – 1110

2

[Authorize]属性を持つHomeController(または本当に誰かがログインする必要があるすべてのコントローラ)を装飾すると、ログインしていない場合、ASP.NET MVCは自動的にログイン画面に人をリダイレクトします。

使用例:

[Authorize] 
public ActionResult Home() 
{ 
} 

また、あなたがOpen Redirect attack vulnerability (and fix)上に読むことをお勧めします。

+0

例としてここにログインしました。私の主な質問は、コントローラがエリア内にある場合、デフォルトとしていくつかのコントローラを起動するようにルーティングを設定する方法です。 – 1110

関連する問題