gpt4 book ai didi

asp.net-mvc-3 - 从自定义授权属性访问角色

转载 作者:行者123 更新时间:2023-12-02 20:56:24 25 4
gpt4 key购买 nike

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

例如,如果我有这个:

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

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

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
}

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

最佳答案

您可以使用这个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;
}

他们有一个内部 split 函数,如下所示:

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

关于asp.net-mvc-3 - 从自定义授权属性访问角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com