【问题标题】:Accessing Roles from Custom Authorize Attribute从自定义授权属性访问角色
【发布时间】:2012-03-19 22:22:38
【问题描述】:

我正在创建自己的自定义授权属性,覆盖 AuthorizeCore 方法,并想知道是否可以访问已传递到授权属性标签的角色。

例如,如果我有这个:

[CustomAuthorize(Roles = "Administrator, Sales, Entry")]

是否可以从这里访问这些:

protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
    }

然后我可以拆分字符串并创建一个数组。

【问题讨论】:

标签: asp.net-mvc-3 authorization roles


【解决方案1】:

你可以this.Roles,这是一个你需要拆分的字符串。

源代码免费提供。

默认的 AuthorizeCore 实现:

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

它们有一个内部拆分函数,如下所示:

internal static string[] SplitString(string original) {
    if (String.IsNullOrEmpty(original)) {
        return new string[0];
    }

    var split = from piece in original.Split(',')
                let trimmed = piece.Trim()
                where !String.IsNullOrEmpty(trimmed)
                select trimmed;
    return split.ToArray();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    相关资源
    最近更新 更多