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

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

所以,例如,如果我有这个:

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

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

protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
    }

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

解决方法

你可以这个.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();
}

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....