2014-07-23 78 views
0

我目前正在使用MVC5和Identity的網站上工作。如果用戶連接或不連接,則頁面可達。

我有一個頁面,當用戶連接(與一個帳戶)時,而且當他不是。如果他連接,我想顯示一些信息。

如果他沒有連接我想顯示的信息較少,我想請他登錄。

我不知道如何來實現這樣的頁面。我有這樣的控制器:

[Authorize] 
    public class PController : Controller 
    { 
     private int UserId; 

     public ActionResult Index(int userId) { 
      UserId = Convert.ToInt32(((ClaimsIdentity) User.Identity).FindFirst("test").Value); 
      PModel model = new PModel(UserId); 
      return View(model); 
     } 
    } 

和我的模型:

公共類PModel { 公衆詮釋用戶ID {獲得;組; }

public PModel(int userId) { 

    ........ 
    } 

在這兩種情況下,我想調用索引方法,並做處理根據模型了連接:

public PModel(int userId) { 
     if(userConnected) { 

     } else { 

     } 
    } 

我不知道是否有可能像這樣。

回答

0

你不這樣做在你的模型(通常)。如果你想使用ASP.net自帶的默認表單認證模型,你需要在你的web.config中設置它,並提供適當的登錄/註銷操作等。在配置中,你有這樣的:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="30" name=".MySite" protection="All"/>  
</authentication> 

如果用戶未通過身份驗證,則操作中的Authorize屬性將停止該方法中的代碼運行。窗體身份驗證代碼,如果他們直接來一個網頁在您的網站無需登錄的用戶重定向到你的web.config中指定的「loginUrl」。


從你的評論,我看錯你的問題。您將需要完全刪除Authorize屬性,然後您可以根據控制器中的Request.IsAuthenticated屬性設置您的型號userConnected屬性。

+0

謝謝你的回答。我不想直接重定向用戶。即使他沒有通過身份驗證,他也可以查看我的頁面;只是頁面中的信息會有所不同。我只需要一個頁面,但內容不同,具體取決於用戶是否已通過身份驗證。 – Fabaud

+1

非常感謝您的幫助。 – Fabaud