这是来自某些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是否等于string.empty的含义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8573166/