我剛剛創建了我的第一個C#Razor MVC3項目。我之前曾經涉足過,但這是我第一次創建一個。C#MVC更改啓動頁面
無論如何,我有一個簡單的問題。我正在使用與默認項目一起構建的MembershipProvider
AspNetSqlProfileProvider
。
我的問題很簡單,我在哪裏以及如何檢查用戶是否在加載Home/Index.cshtml
之前登錄,以便我可以將他們引導至另一頁?
如果他們已登錄,我想將他們帶到客戶門戶。
如果他們沒有登錄,我想把他們帶到登錄屏幕。
我剛剛創建了我的第一個C#Razor MVC3項目。我之前曾經涉足過,但這是我第一次創建一個。C#MVC更改啓動頁面
無論如何,我有一個簡單的問題。我正在使用與默認項目一起構建的MembershipProvider
AspNetSqlProfileProvider
。
我的問題很簡單,我在哪裏以及如何檢查用戶是否在加載Home/Index.cshtml
之前登錄,以便我可以將他們引導至另一頁?
如果他們已登錄,我想將他們帶到客戶門戶。
如果他們沒有登錄,我想把他們帶到登錄屏幕。
一個更通用的方法來設置這將包括兩個步驟:
首先,添加[授權]屬性到你的動作,你是確保:
[Authorize]
public ActionResult Index() {
}
這將確保用戶已通過身份驗證(使用FormsAuthentication)。
其次,在您的Web.config文件中,設置您希望用戶在需要登錄時重定向到的URL。
<authentication mode="Forms">
<forms name="cookieName" loginUrl="~/Account/LogOn" timeout="30" domain=".example.com" slidingExpiration="true" />
</authentication>
幾個選項在這裏。你能做到這一點在你的家/索引視圖(如果這是你叫它什麼),然後就使用這樣的:
if(Request.IsAuthenticated())
return RedirectToAction("login","login");
或者你也許可以做到這一點在應用程序啓動方法。不過,我可能只是做第一個。
這給了我一些想法,但這是在用戶登錄之後,而不是登錄屏幕之前。謝謝您的幫助。 – ErocM
@ErocM以及home/index我的意思是你的默認登陸頁面。這應該在任何人登錄之前。 –
頁(網址相當),用戶會被重定向到如果不是下在Web.config
定義登錄:
<authentication mode="Forms">
<forms loginUrl="~/Home/GetIn" .... />
</authentication>
如果然而,在ASP.NET MVC路由踢記錄,這是在Global.asax.cs
,默認情況下有這樣的路線:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
} // Parameter defaults
這意味着,如果沒有控制器或者動作在URL中指定然後它會默認爲Home
和Index
我喜歡這個選項。忘了這個,因爲我通常不使用內置的認證 –
這是我最終做的,謝謝! – ErocM