无论用户是否连接,页面都可访问



我目前在一个网站与MVC5和身份。

我有一个页面,这是可访问的,当用户连接(与帐户),但也当他不是。如果他已连接,我想显示一些信息。

如果他没有连接,我想显示更少的信息,我想邀请他登录。

我不知道如何实现这样一个页面。我有这个控制器:

   [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 {
         }
  }

我不知道这样是否可能。

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

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

如果用户未经过身份验证,操作上的Authorize属性将阻止该方法中的代码运行。表单的身份验证代码会将用户重定向到web中指定的"loginUrl"。如果他们直接进入你的网站页面而不登录,请配置。


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

相关内容

  • 没有找到相关文章

最新更新