MVC5身份验证过滤器

Sha*_*eKm 5 asp.net-mvc-5

新身份验证和以前的授权过滤器之间有什么区别?我没有看到任何区别.我一直用:[Authorize(Roles = "Admin, User")]

您何时需要使用身份验证过滤器?什么时候使用授权?

有人可以解释一下这个区别吗?样品会很棒.谢谢

Vli*_*nce 4

您可以在这里找到一篇文章:

\n\n

我\xe2\x80\x99ve也在这里创建了类似的帖子:

\n\n

虽然我得到的答案很好地澄清了一些事情,但我\xe2\x80\x99m仍然对如何使用它有点困惑,但更多的是预期的行为(正如你\xe2\x80\x99ll看到的,如果你阅读我的邮政)。

\n\n

简而言之,新Authentication过滤器在旧Authorization过滤器之前被触发。

\n\n

此外,据我了解,身份验证是检查用户是否在您的网站上经过身份验证的好地方。换句话说,该用户是否在某个时候向我提供了他的凭据,以便我在数据库中查找它们。如果答案是肯定的,那就太好了……继续。

\n\n

如果答案是否定的,则用户未经过身份验证,反过来,我应该返回 http 状态代码401 Unauthorized

\n\n
\n\n

至于Authorization,我的理解是,用户是隐式进行身份验证的,他可能会也可能不会Authorized访问某个页面或资源。如果是这种情况,那么我应该返回 http 状态代码403 Forbidden。这就是该[Authorize]属性发挥作用的地方。

\n\n
\n\n

尽管这是我的理解,但这两个过滤器的行为并不像我想象的那样工作。也许这是我缺乏理解造成的......

\n\n

例如:新Authentication过滤器似乎无法识别(或考虑)该[AllowAnonymous]属性。在我看来,它应该如此。

\n\n

另一方面,旧[Authorize]属性确实识别(并考虑)该[AllowAnonymous]属性。

\n\n

最后,我不确定这是否会对您有所帮助或让您更加困惑,但我仍在与他们一起玩耍以完全掌握它。

\n