AllowAnonymous 和 OverrideAuthorizeAttribute 的使用有什么区别。
是一样的吗?
http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api
两者不同,但在某些情况下可以产生相同的效果。
身份验证是验证用户的过程。覆盖会在下一个最高范围级别禁用覆盖类型的过滤器。授权是确定用户是否有权访问特定资源的过程。
这[AllowAnonymous]
属性禁用身份验证,以便 Web api 在访问用此属性修饰的控制器或用此属性修饰的特定操作方法的访问请求期间将跳过身份验证和授权。考虑链接中列出的文章中的以下控制器类
[Authorize]
public class ValuesController : ApiController
{
[AllowAnonymous]
public HttpResponseMessage Get() { ... }
public HttpResponseMessage Post() { ... }
}
在上面的示例中,授权用户(任何已识别的用户)可以访问 post 操作方法,但 Get 操作方法不需要授权。
授权将对资源的访问权限限制为属于已被授予访问权限的用户或用户角色的用户。这[OverrideAuthorization]
属性禁用[Authorization]
步骤使得任何经过身份验证的用户都可以访问该操作方法。这可以从本文中的以下示例中看出。
考虑以下控制器类:
[Authorize(Roles="Admins")]
public class SomeController : ApiController {
[OverrideAuthorization]
[Authorize(Roles="Users")]
public IEnumerable<SomeModel> Get() {...}
public SomeModel Post() {...}
}
在上面的示例中,用户必须经过身份验证并具有访问控制器定义的任何操作方法的原则。但是,虽然只有具有“管理员”角色的原则才能访问 Post 操作方法,但任何经过身份验证的用户角色用户都可以访问 Get 操作方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)