ASP .NET 5 MVC 6 Identity 3 角色声明组 [关闭]

2024-04-06

我目前正在寻找一种解决方案,以在带有 Identity 3 的 ASP .NET 5 MVC 6 中使用高级角色/组权限管理。我启动了一个带有集成的简易登录系统的新预览入门 Web 项目。

现在我需要一个复杂的“用户权限管理”,具有以下功能:

  1. 用户可以属于多个组/角色
  2. 组/角色有许多访问对象(例如 CanAccessUser、CanEditUser...)
  3. 每个组/角色的这些访问对象(也许是声明?)相互补充
  4. (最终解决方案可选):另外 => 访问对象(可能是声明)可以由组独立分配给用户

我已经看到身份已经广泛地为我提供了合适的表结构。 (例如 AspNetUsers、AspNetUserRoles、AspNetRoles、AspNetRoleClaims),

但我缺少一个很好的示例/文档来使用它们。

对于MVC 5,我使用了这个例子:用户有很多组,一个组可以有很多角色(角色是类/函数源代码中的访问对象)ASP.NET Identity 2.0:实现基于组的权限管理 http://typecastexception.com/post/2014/08/10/ASPNET-Identity-20-Implementing-Group-Based-Permissions-Management.aspx

这些要求已经存在一个有效的示例,您不必重新发明轮子。


我们在这里处于同一条船上,当然,除了来源之外,没有太多阅读……

我们最终实施了政策。策略是满足授权所需的一组声明。然后可以将这些策略应用于控制器。

您可以在 Startup.cs、ConfigureServices 中定义您的策略:

services.AddAuthorization(options =>
{
    options.AddPolicy("SalesSenior", policy =>
    {
        policy.RequireClaim("department", "sales");
        policy.RequireClaim("status", "senior");
    });
});

我们定义了角色,为它们分配了 1 个或多个声明,并为用户分配了角色,以便在点击控制器时根据适当的策略检查它们。

您可以注入IAuthorizationService进入控制器或属性,如下所示:

public class SalesDashboardController: Controller
{
    private readonly IAuthorizationService _authz;

    public VarianceOverviewController(IAuthorizationService authz)
    {
        _authz = authz;
    }
    ...
}

然后您可以使用IAuthorizationService检查用户声明的有效性...

if (await _authz.AuthorizeAsync(User, "SalesSenior"))
{
    // User is authorized            
}

本文 http://leastprivilege.com/2015/10/12/the-state-of-security-in-asp-net-5-and-mvc-6-authorization/是我这些东西的主要来源,对我来说是一个很好的入门读物。祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP .NET 5 MVC 6 Identity 3 角色声明组 [关闭] 的相关文章

  • 如何将 ASP.NET 5 从 Beta6 升级到 Beta7

    ASP NET 5 vNext 从 Beta 6 升级到 Beta 7 的备忘单是什么 先决条件 从 Beta 6 开始 请参阅之前的注释 https stackoverflow com questions 31745539 how to
  • 数据库中的 HTML 标签是不好的做法还是好的做法?

    有时我需要格式化来自数据库的特定数据或部分数据 例如 如果我有这样的 desc 存储在数据库中 HTML 4 经过调整 延伸和增强 超出了其最初的范围 为网站带来了高水平的交互性和多媒体 Flash Silverlight 和 Java 等
  • ASP.NET 中的回发问题

    我有一个 asp net 标签控件 其 Visible 属性设置为 false 在后面的代码中 我根据用户是否已登录将其可见性设置为 true false 一个奇怪的行为是 在回发时 代码隐藏执行并将标签可见性的值设置为任意值 然后标记执行
  • 我可以更改 FormsAuthentication cookie 名称吗?

    我可以更改 FormsAuthentication cookie 名称吗 如果是 如何 我遇到的问题是 当我在同一个域中部署两个 Web 应用程序时 当任何人登录时 第二个应用程序将自动注销 因为它们使用相同的身份验证 cookie 名称
  • Visual Studio 2010 - 在调试期间查看列表导致超时

    我正在尝试调试一个项目 突然遇到一个问题 如果我尝试查看它 枚举任何对象集合都会导致超时 如果我正常运行该程序 就没有问题 如果我尝试查看任何集合 例如列表 我会收到超时错误 整个事情就会崩溃 我认为我的一个更复杂的集合可能出了问题 所以我
  • ASP.NET Identity:使用角色授权属性在 Azure 上不起作用

    我刚刚在 Azure 上发布了带有 Identity 和 OWIN 授权的新 ASP NET MVC 网站 前端工作得很好 但后端有问题 我在管理控制器中使用 Authorize 属性来检查用户是否具有访问它所需的角色 如下所示 Autho
  • ASP.NET MVC 5 属性路由:Url.Action 返回 null

    我在重构我们的支付处理操作方法 由我们的第 3 方在线支付提供商调用 时遇到问题 我们有一个产品控制器 Authorize and RoutePrefix products 类级别的属性和操作方法 包括以下内容 Product string
  • 如果验证失败,如何在 ASP.NET MVC 中阻止 jquery ajax 提交

    我在用ASP NET 5 MVC RC1 我的 ASP NET MVC 使用的 jquery 验证插件是默认 ASP NET 5 模板项目使用的标准 jquery validate js jQuery Validation Plugin v
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • ASP.NET Core:会话 ID 始终变化

    今天启动了一个全新的 ASP NET Core 网站 按照说明添加会话 我们在索引页上打印出会话 ID 它始终是唯一的 我认为这可能是 cookie 合规性 所以我在 Chrome 的高级设置和调试器中删除了所有 cookie 但横幅不会再
  • 如何从另一个UserControl继承一个UserControl?

    是否可以从另一个用户控件继承用户控件 我想要实现的是从另一个用户控件继承的用户控件 所以我有baseusercontrol ascx 它只有文本 Stuff 然后我有另一个用户控件 childusercontrol ascx 继承了base
  • 为什么当输入很大时,asp.net 找不到合适的 apicontroller?

    我有一个功能可以立即保存我的实体列表 public void Save IEnumerable
  • Chrome 87 在针对 Windows IIS 10 的 CORS 中的 Windows 身份验证失败

    Chrome 86 及更早版本 Edge Curl 和 IE 都能够对 Windows 2019 计算机上的 IIS 10 ASP NET 服务进行跨域 Windows 身份验证 没有任何问题 但 Chrome 87 失败 并显示 从源 h
  • 如何在asp.net背后的代码中获取css样式

    我需要从 asp net c 中的代码后面获取 css 样式 在网上没有找到解决方案 是否可以直接从 styles css 文件获取它 还是需要解决方法 我在我的网络应用程序中使用主题 但我还需要进行一些服务器处理 并且我需要 ccs 文件
  • 使用 Itextsharp 读取本地化 PDF 文件

    我正在尝试使用 iTextSharp 阅读 PDF 文件 问题是当尝试阅读英语以外的 PDF 文件 例如印地语或阿拉伯语 时 它无法获取正确的单词 我想知道 我应该在系统上安装印地语或阿拉伯字体 还是需要对编码进行一些处理 ITextExt
  • 新 ASP.NET MVC 3 站点的 Razor 与 Webforms 视图引擎

    剃刀更漂亮 而且是新的 因此很酷 Webforms 是我已经熟悉的东西 当然 我毫无疑问会去学习新东西 Razor 但我听说有两个令我担心的缺点 无法轻松重用现有的 Web 表单控件 在极少数情况下 我可能需要拖动一些东西 我会重申 罕见
  • ASP.NET MVC 3 中嵌入的 PHP 站点的 IgnoreRoute

    我有一个带有嵌入式 WordPress 博客的 MVC 3 网站 以下所有 url 均通过 MVC 定向 www mysite com www mysite com aboutus www mysite com contactus 我还有一
  • __doPostBack 重新加载整个页面而不仅仅是 UpdatePanel

    在我的 javascript 中 我有以下行 doPostBack MyPanel MyParam 在后面的代码中 我使用 MyParam 查询数据库并将结果绑定到 MyPanel updatepanel 内的 gridview updat
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 如何使用 jQuery 过滤 DropDownList 中的选项

    我有 2 个 DropDownList 第一个 DropDownList 有 4 个选项 第二个 DropDownList 有 20 个选项 我想要一个选项value 1在第一个 DropDownList 中选择我在第二个 DropDown

随机推荐

  • 在嵌入式 YouTube 播放器中自动播放下一个视频

    YouTube 上有一个自动播放功能 可以播放下一个推荐的视频 如何在嵌入式 YouTube 播放器中启用此功能 The YouTube API 在这里 https developers google com youtube player
  • Flutter - ListView 可以包含静态小部件和流吗

    目前我有一个由 StreamBuilder 扭曲的 ListView 它从 firebase firestore 获取数据 例如用户列表 它看起来是这样的 Widget UsersList new StreamBuilder stream
  • 如何在 Specs2 (Scala) 中显示自定义失败消息?

    例如 对于这样的代码 myNum must beEqualTo SOME INTERESTING TEXT 该消息将类似于以下内容 java lang Exception ArrayBuffer doesn t have size 1 bu
  • 枚举实用程序库

    我正在寻找一个开源库或用于在 Net 中使用枚举类型的示例 除了人们用于 Enum 的标准扩展 TypeParse 等 之外 我还需要一种方法来执行操作 例如返回给定枚举值的 Description 属性值或返回具有 Description
  • 计算加速度(驾驶汽车)

    我正在尝试像应用程序 Dynolicious 一样复制加速度计算 但我不确定该去哪里计算 我用吗Core Motion或者我使用其他数字进行计算 我尝试过使用Core Motion s userAcceleraion值 但它根本不像我正在寻
  • CSS 从中心过渡到右下角

    我有一个要求 其中容器在整个页面上伸展 当我单击容器时 它应该变小 这应该发生在动画中 我尝试了 css 过渡 它将拉伸的元素动画到顶部 慢慢缩小到提供的尺寸 同时向右上角移动 但我想要的是 中间缩小 然后通过动画移动到页面右下角 Fidd
  • 在 Jython 中使用多处理 2.6.2.1 包

    我是 Jython Python 世界的新手 我正在尝试在 Jython 中安装多处理包 但是我收到了来自 easy install 的以下返回消息 Setup script exited with error Compiling exte
  • 无法获取 ZeroMQ python 绑定来通过 IPC 接收消息

    我正在尝试通过 IPC 实现 PUB SUB 如果我更改下面的代码 以便订阅者绑定到 tcp 5000 并且发布者连接到 tcp localhost 5000 它可以工作 但我无法让它通过 IPC 工作 我究竟做错了什么 订阅者 py im
  • JQuery UI 加载事件?

    有没有办法不仅检测 jquery UI 是否加载 而且在加载时触发一个事件 现在 我将代码包装在 document ready 函数中 但有时 UI 代码会出错 因为 UI 库未完全加载 所有内容都按正确的顺序加载 该代码在 99 的情况下
  • 如何使用 https 运行 Vue.js 开发服务?

    我正在使用 Vue cli 使用 webpack 模板创建 vue 项目 如何在开发中使用 https 运行它 npm run dev 在最新的vuejs 截至2018年5月7日 中 需要在项目根目录下添加一个 vue config js
  • 为什么我的 Express 路由器中间件没有定义 req.route?

    我正在尝试使用路由器中间件来获取以下值请求路由 https expressjs com en api html req route 我有一些像这样的简单代码 服务器 js import api from api app use api ap
  • webView:didFailLoadWithError -1004: 在 Phonegap ios 中连接 google plus 时无法连接到服务器

    在获取配置文件数据之前接受 google plus 身份验证时 我收到 webView didFailLoadWithError 1004 无法连接到服务器 错误 这些代码之前可以正常工作 现在我面临这些错误 不知道为什么我无法连接 请帮助
  • 使用鼠标光标捕获屏幕截图

    我使用以下代码在 Windows 上获取屏幕截图 hdcMem CreateCompatibleDC hdc int cx GetDeviceCaps hdc HORZRES int cy GetDeviceCaps hdc VERTRES
  • 正确的原型继承

    所以我真的查遍了互联网 发现了许多在 javascript 中设置原型继承的不同方法 其中一些使用call 其中一些使用以下语法 var rabbit prototype new Animal 有些在更改原型后更改构造函数 有些则不更改 有
  • vim :AnsiEsc - 如何默认打开它们?

    我有带有彩色日志条目的日志文件 假设扩展名为 smt2 其中颜色由 ansi 转义码定义 我安装了vim插件基于AnsiEsc vim http www vim org scripts script php script id 302 现在
  • awk 解析文件名并将结果添加到每行末尾

    我有许多名称相似的文件 例如 DWH Export AUSTA 20120701 20120731 v1 1 csv 397 dat 2012 10 02 04 01 46 out DWH Export AUSTA 20120701 201
  • 人类友好的二进制编码

    不久前 我发现一个网站描述了一种对人类友好的二进制到文本编码 例如 在输入 用于解码 时 它接受 0 o 和 O 全部作为相同的值 因为人们往往很容易混合这些字符 不幸的是我不记得它是怎么叫的 编辑 这就是我正在寻找的 其他Base32 的
  • retq 和 ret 有什么区别?

    让我们考虑以下程序 它计算参数的无符号平方 global foo text foo mov rdi rax mul rdi ret 这是正确编译的as 但反汇编为 0000000000000000
  • 如何设置iPhone振动时长?

    我正在使用 AudioServicesPlaySystemSound 来调用振动函数 AudioServicesPlaySystemSound kSystemSoundID Vibrate 有什么办法可以设置振动的持续时间吗 我知道默认持续
  • ASP .NET 5 MVC 6 Identity 3 角色声明组 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在寻找一种解决方案 以在带有 Identity 3 的 ASP NET 5 MVC 6 中使用高级角色 组权限管理 我启动了一