我目前在一个网站与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
属性。