【发布时间】:2013-12-03 00:15:16
【问题描述】:
假设我有 WebApi 控制器
[Authorize]
public class SomeApiController : ApiController
控制器操作方法本身没有任何[Authorize] 或[AllowAnonymous] 属性。
如果用户没有角色,我希望 Authorize 属性返回 401(未授权)错误 - 看起来合乎逻辑(如果用户有角色但现在没有任何角色 - 即使用户经过身份验证,也不应该允许他执行操作) .我查看了 asp.net mvc webstack 我在 Authorize 属性中找到了以下代码:
if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole))
{
return false;
}
所以看起来如果我们没有传递角色授权属性只是检查用户是否经过身份验证。在角色列表中设置每个角色对我来说不是一个选项(我的意思是[Authorize(Roles="role1,role2,...")])。
因此问题 - 我可以以某种方式实现设置 Authorize 属性以检查用户是否具有任何角色。还是写继承自上面的自定义属性更好?
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api authorization