我目前正在开发一个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 {
}
}
我不知道这是否可能。
答案 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
属性。