这是来自一些 MCTS 70-515 考试练习测试的问题。
请帮忙找出正确的2个答案
您正在实现一个允许用户查看和编辑数据的 ASP.NET MVC 2 Web 应用程序。您需要确保只有登录用户 可以访问 Controller 的编辑操作。您可以将哪两个属性添加到编辑操作以实现此目标?
(每个正确答案都代表一个完整的解决方案。选择两个。)
- [授权(用户=“”)]
- [授权(角色 = "")]
- [授权(用户 = "*")]
- [授权(角色 = "*")]
最佳答案
查看AuthorizeAttribute
的源代码,发现没有通配符“*”。
如果 [Authorize(Users = "")]
会导致“没有人”可以访问该操作,那是没有意义的。
所以答案1和2是正确的。
AuthorizeAttribute 的源代码
protected virtual bool AuthorizeCore(HttpContextBase httpContext) {
if (httpContext == null) {
throw new ArgumentNullException("httpContext");
}
IPrincipal user = httpContext.User;
if (!user.Identity.IsAuthenticated) {
return false;
}
if (_usersSplit.Length > 0 && !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase)) {
return false;
}
if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole)) {
return false;
}
return true;
}
还有 Role
和 Users
属性。
public string Roles {
get {
return _roles ?? String.Empty;
}
set {
_roles = value;
_rolesSplit = SplitString(value); // simple split by comma
}
}
public string Users {
get {
return _users ?? String.Empty;
}
set {
_users = value;
_usersSplit = SplitString(value); // simple split by comma
}
}
关于asp.net-mvc - AuthorizeAttribute构造函数参数Roles equals string.empty是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8573166/