asp.net-mvc - AuthorizeAttribute构造函数参数Roles equals string.empty是什么意思?

标签 asp.net-mvc authorization

这是来自一些 MCTS 70-515 考试练习测试的问题。

请帮忙找出正确的2个答案


您正在实现一个允许用户查看和编辑数据的 ASP.NET MVC 2 Web 应用程序。您需要确保只有登录用户 可以访问 Controller 的编辑操作。您可以将哪两个属性添加到编辑操作以实现此目标?

(每个正确答案都代表一个完整的解决方案。选择两个。)

  1. [授权(用户=“”)]
  2. [授权(角色 = "")]
  3. [授权(用户 = "*")]
  4. [授权(角色 = "*")]

最佳答案

查看AuthorizeAttribute 的源代码,发现没有通配符“*”。

如果 [Authorize(Users = "")] 会导致“没有人”可以访问该操作,那是没有意义的。

所以答案12是正确的。

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;
}

还有 RoleUsers 属性。

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/

相关文章:

java - Java 中的 SonarQube Web API 身份验证

mongodb - 使用管理数据库中设置的正确凭据登录失败 - MongoDb

c# - 使用 C# 创建的 ZipArchive 不包含任何条目

asp.net-mvc - 许可证执行系统已被篡改 - win server 2008

html - 如果有打开的 `if` 标签,Razor `}` 不会注册关闭 `<table>`?

asp.net-mvc - ASP.NET MVC - 使用 Moq 框架对 RenderPartialViewToString() 进行单元测试?

asp.net-mvc - ASP.Net MVC4 HandleError 未渲染指定 View

php - 如何在 rest api 中验证/检查基本身份验证 header

ruby-on-rails - 授权的最佳做法是什么?

azure - Web API 项目的 ADAL js 和 Azure AD 身份验证