首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.NET允许对文件夹进行“额外访问”

.NET允许对文件夹进行“额外访问”
EN

Stack Overflow用户
提问于 2021-11-03 08:11:00
回答 1查看 32关注 0票数 1

(.NET核心3.1应用程序)

现在,我可能被这个逼得走投无路.

文件夹结构

要访问Account文件夹,用户需要在角色administrator

代码语言:javascript
运行
复制
options.Conventions.AuthorizeAreaFolder("Administration", "/Account", "RequireAdministrator");
代码语言:javascript
运行
复制
options.AddPolicy("RequireAdministrator", policy => policy
    .RequireRole("Administrator")
    .RequireAuthenticatedUser());

我想要什么

我创建了一个新角色:DataConsulter,我想让它访问Account/Records,但我不希望它在administrator角色中。此外,administrator用户访问Account/Records文件夹不应该需要这个新角色。在不改变文件夹结构的情况下,我能做到这一点吗?我应该吗?

我想我想要这样的东西(在删除了@jb11 11所建议的先前访问之后):

代码语言:javascript
运行
复制
options.AddPolicy("RequireAdministrator", policy => policy
    .RequireRole("Administrator" || "DataConsulter")
    .RequireAuthenticatedUser());
EN

回答 1

Stack Overflow用户

发布于 2021-11-03 10:57:56

当您调用AuthorizeAreaFolder时,AuthorizeAttribute就是PageApplicationModel's EndpointMetadata已添加

因此,要重写对特定文件夹的授权,需要删除该属性。这可以通过调用AddFolderApplicationModelConvention、标识属性和删除属性来实现。

代码语言:javascript
运行
复制
options.Conventions.AddFolderApplicationModelConvention("/Account/Records", action =>
                        {
                        var authorizeAttribute = action.EndpointMetadata.FirstOrDefault(r => r is AuthorizeAttribute {Policy: "RequireAdministrator"});
                        if (authorizeAttribute != null)
                        {
                            action.EndpointMetadata.Remove(authorizeAttribute);
                        }
                    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69821491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档