2014-07-23 37 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