如果用户连接与否,页面可以访问。

时间:2014-07-23 08:05:29

标签: asp.net asp.net-mvc-5 asp.net-identity

我目前正在开发一个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 {     public int UserId {get;组; }

public PModel(int userId) {

    ........
    }

在这两种情况下,我都想调用Index方法,并根据模型中的连接进行处理:

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

         } else {

         }
  }

我不知道这是否可能。

1 个答案:

答案 0 :(得分:0)

您不会在模型中执行此操作(通常)。如果你想使用ASP.net附带的默认表单身份验证模型,你需要在web.config中设置它并提供适当的登录/注销操作等。在配置中,你有这样的东西:

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

如果用户未经过身份验证,您操作的Authorize属性将阻止该方法中的代码运行。表单身份验证代码会将用户重定向到&#39; loginUrl&#39;如果他们直接访问您站点中的页面而未登录,则在您的web.config中指定。


根据您的评论,我误解了您的问题。您需要完全删除Authorize属性,然后可以根据控制器中的userConnected属性设置模型Request.IsAuthenticated属性。