当涉及到显示有关认证的视图时(如果他是用户,视图根据访问者显示)。我面临很多选择。所以我需要你的帮助来告诉我如何处理这种情况:
为什么你建议的选择更好?
答案 0 :(得分:0)
您不必使用Authorize
属性。它的主要功能是在上下文中设置User
,然后默认情况下,它还会检查它们是否已登录。但是,也可以使用AllowAnonymous
属性覆盖最后一部分:
[Authorize]
[AllowAnonymous]
public ActionResult SomeView()
{
...
}
因此,现在您的视图将有User
可供使用,您可以使用基于身份验证状态的视图动态显示视图的不同部分:
@if (User.IsAuthenticated)
{
<p>Logged in</p>
}
else
{
<p>Anonymous</p>
}
编辑(澄清)
Authorize
属性实际上为您做了两件不同的事情。首先,它设置用于识别用户的所有机制:读取cookie或其他任何内容,检查身份验证状态,提取用户信息,是否经过身份验证等。其次,它验证用户实际上已登录。 AllowAnonymous
跳过第二部分,允许任何登录或未登录的人访问视图,但这是关键,你仍然需要第一部分知道你是否有经过身份验证的用户。
因此,简单地说,同时使用Authorize
和AllowAnonymous
属性意味着“查看用户是否已登录,但不要求它访问此视图”。这样,匿名用户仍然可以访问该页面,但仍然可以向实际登录的用户提供唯一或不同的内容。