VS 2012 を使用して新しい mvc 4 プロジェクトを作成しました。アプリケーションを実行すると、RouteConfig.cs でデフォルトとして設定されているホーム/インデックスが開きます。プロジェクトの最初のページとしてアカウント/ログインを作成したいと考えています。デフォルトのルートをアカウント/ログインに変更してこれを試みましたが、うまくいきません。これ以外に気をつけなければならないことはありますか?
2 に答える
デフォルトルートを変更することは、ユーザーにランディングページを強制することと同じではありません。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
上記をに変更するcontroller="Account", action="Login"
と、IISのサイトで構成した指定されたホストヘッダーで着信するすべての要求が実際に処理されます。ただし、正当なルートを持つユーザーはリダイレクトされません。
このためには[Authorize]
、@mreyerosが言及した属性を実際に使用する必要があります。これは、サイト内の各コントローラーで実行できます。または、プロジェクト内の他のコントローラー全体から継承できる新しいベースコントローラーを作成することもできます。
本当にリダイレクトが必要な場合は、同じアプローチ(継承元の新しい属性付きベースコントローラー)を使用して独自のRedirectOnLandingAttributeを作成できますが、達成しようとしていることは、フレームワークがすでに持っていることを活用することによって最もよくアプローチされると思いますオファー。
お役に立てれば。
It seems as though your entire application requires the user to be authenticated, even your home controller. You could add the AuthorizeAttribute to your HomeController and it should require that the user accessing it should be logged in first.
[Authorize]
public class HomeController : Controller {
...
}