gpt4 book ai didi

asp.net-mvc - ASP .NET MVC 中的 Authorize 属性是否用于身份验证和授权?

转载 作者:行者123 更新时间:2023-12-03 12:34:44 31 4
gpt4 key购买 nike

我正在阅读有关 ASP .NET MVC 的内容,并且我刚刚进入了有关 Authorize 属性的部分。就是说 Authorize 属性用于检查用户是否通过了 Controller 的身份验证。这是真的?我知道该属性旨在用于授权目的,但使用此属性进行身份验证也是最佳实践吗?

如果不是,验证(不执行)身份验证的最佳做法是什么?

如果是这样,为什么要这样做?我错过了什么吗?

最佳答案

Authorize 确实会检查用户是否经过身份验证,否则它将无法确定用户的角色或当前用户是哪个用户(匿名用户除外)。也就是说,为了获得授权,如果不允许匿名访问,则必须先进行身份验证。以下是 RTM 版本中 AuthorizeCore 方法的相关片段(来自 http://www.codeplex.com/aspnet )。

// This method must be thread-safe since it is called by the thread-safe OnCacheAuthorization() method.
protected virtual bool AuthorizeCore(HttpContextBase httpContext) {
if (httpContext == null) {
throw new ArgumentNullException("httpContext");
}

IPrincipal user = httpContext.User;
if (!user.Identity.IsAuthenticated) {
return false;
}

...

如果 AuthorizeCore 在 OnAuthorization 中返回 false,则 AuthorizationContext.Result 设置为新的 HttpUnauthorizedResult,这将导致用户被重定向到登录页面(在 FormsAuthentication 中)或错误。

编辑 :阅读您对其他答案的评论后,我会说您错过了重点。从技术上讲,它只是在做授权。最低级别的授权是您需要经过身份验证才能执行操作。您可以通过不为 Authorize 属性指定任何用户或角色来获得此信息。允许任何用户或角色,只要它经过身份验证。通过指定充当过滤器的用户和/或角色,您可以缩小操作的范围,并且用户不仅需要经过身份验证(因此您可以检查名称/角色成员资格),而且还需要根据过滤器获得资格。

关于asp.net-mvc - ASP .NET MVC 中的 Authorize 属性是否用于身份验证和授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/970271/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com