2015-03-13 103 views
0

我不知道我在問一個有效的問題與否。我正在開發MVC Web應用程序。在這我有Home/Index方法。當我運行該網站時,它顯示http://localhost:25537/url這是指向Home/Index方法。在Index頁面我顯示了一些橫幅和其他一些內容。當我登錄我的網站時,我想要路由到相同的頁面,即http://localhost:25537/這是指向Home/Index,但內容應該改變。Mvc _layout Request.IsAuthenticated

這是我routeconfig

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Account", action = "Index", id = UrlParameter.Optional } 
     ); 

我怎樣才能實現這樣view?我如何路由到相同的頁面,但內容應該改變?

如果我使用Request.IsAuthenticateIndex頁面,那麼登錄後顯示。但我有一個疑問。這Home/index被定義爲[AllowAnonymous]但登錄後它應該是[Authorize]

回答

0

如果您的控制器操作使用[Authorize]屬性修飾,則無關緊要。該屬性僅檢查您是否被允許在不登錄的情況下查看頁面。

那麼在你看來,你可以簡單地使用:

@if(Request.IsAuthenticated){ 
    // some Stuff you want to show if the user has logged in 
} 
1

如果我在索引頁使用Request.IsAuthenticate話,就說明登錄後。

這正是你如何做到的。在你的看法中,你只會將驗證過的內容包裝在一個檢查中。例如:

<div> 
    public content 
</div> 
@if (Request.IsAuthenticated) 
{ 
    <div> 
     authenticated-only content 
    </div> 
} 

當且僅當發出請求的用戶通過身份驗證時,纔會將內容傳遞到客戶端。

此主頁/索引定義爲[AllowAnonymous],但登錄後應該是[Authorize]

不,它不應該。索引操作仍然允許匿名訪問。它返回的視圖只有一些不顯示給匿名用戶的部分。但是這些用戶仍然可以請求操作本身。

+0

謝謝你的回覆。所以我的實施是正確的?登錄方法'[Authorize]'或'[AllowAnonymous]'' – 2015-03-13 10:32:56

+0

後沒關係其實我沒有得到什麼應該是這個問題的標題。這就是爲什麼我把'Mvc _layout Request.IsAuthenticated' – 2015-03-13 10:34:04

+0

@AjayPunekar:從這個意義上講,這些屬性將決定請求是否需要授權,或者是否可以由匿名用戶進行。在絕大多數情況下,「Home/Index」允許匿名訪問。如果您希望用戶在登錄之前能夠訪問「主頁/索引」,則需要允許匿名訪問。 – David 2015-03-13 10:34:35

相關問題