2012-09-04 37 views
1

我剛剛創建了我的第一個C#Razor MVC3項目。我之前曾經涉足過,但這是我第一次創建一個。C#MVC更改啓動頁面

無論如何,我有一個簡單的問題。我正在使用與默認項目一起構建的MembershipProviderAspNetSqlProfileProvider

我的問題很簡單,我在哪裏以及如何檢查用戶是否在加載Home/Index.cshtml之前登錄,以便我可以將他們引導至另一頁?

如果他們已登錄,我想將他們帶到客戶門戶。

如果他們沒有登錄,我想把他們帶到登錄屏幕。

回答

2

一個更通用的方法來設置這將包括兩個步驟:

首先,添加[授權]屬性到你的動作,你是確保:

[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> 
+0

我喜歡這個選項。忘了這個,因爲我通常不使用內置的認證 –

+0

這是我最終做的,謝謝! – ErocM

2

幾個選項在這裏。你能做到這一點在你的家/索引視圖(如果這是你叫它什麼),然後就使用這樣的:

if(Request.IsAuthenticated()) 
    return RedirectToAction("login","login"); 

或者你也許可以做到這一點在應用程序啓動方法。不過,我可能只是做第一個。

+0

這給了我一些想法,但這是在用戶登錄之後,而不是登錄屏幕之前。謝謝您的幫助。 – ErocM

+0

@ErocM以及home/index我的意思是你的默認登陸頁面。這應該在任何人登錄之前。 –

0

頁(網址相當),用戶會被重定向到如果不是下在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中指定然後它會默認爲HomeIndex