显示有关身份验证的视图?

时间:2013-02-14 16:13:39

标签: asp.net-mvc authentication

当涉及到显示有关认证的视图时(如果他是用户,视图根据访问者显示)。我面临很多选择。所以我需要你的帮助来告诉我如何处理这种情况:

  • 使用2个视图(一个用户和其他用户)或一个视图。
  • 使用2个动作(一个具有授权过滤器而另一个没有),或只有一个动作。

为什么你建议的选择更好?

1 个答案:

答案 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跳过第二部分,允许任何登录或未登录的人访问视图,但这是关键,你仍然需要第一部分知道你是否有经过身份验证的用户。

因此,简单地说,同时使用AuthorizeAllowAnonymous属性意味着“查看用户是否已登录,但不要求它访问此视图”。这样,匿名用户仍然可以访问该页面,但仍然可以向实际登录的用户提供唯一或不同的内容。

相关问题