问题标签 [roles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Context.User 在 Global.asax.Application_AuthenticateRequest 中分配后失去角色
我在我的 asp.net (3.5) 应用程序中使用表单身份验证。我还使用角色来定义哪些用户可以访问应用程序的哪些子目录。因此,我的 web.config 文件的相关部分如下所示:
根据我所阅读的内容,这应该确保唯一能够访问 Admin 目录的用户将是已经过身份验证并分配了 Admin 角色的用户。
用户身份验证、保存身份验证票证和其他相关问题都可以正常工作。如果我从 web.config 文件中删除标签,一切正常。当我尝试强制只有具有 Admin 角色的用户才能访问 Admin 目录时,问题就出现了。
基于此MS 知识库文章以及提供相同信息的其他网页,我已将以下代码添加到我的 Global.asax 文件中:
但是,当我尝试登录时,我无法访问 Admin 文件夹(重定向到登录页面)。
尝试调试问题时,如果我单步执行请求,如果我在上面标记为 Debug#1 的行处执行 Context.User.IsInRole("Admin"),它会返回 false。如果我在 Debug#2 行执行相同的语句,它等于 true。因此,至少就 Global.asax 而言,角色已正确分配。
在 Global.asax 之后,执行直接跳转到 Login 页面(因为缺少角色会导致 admin 文件夹中的页面加载被拒绝)。但是,当我在登录的 Page_Load 的第一行执行相同的语句时,它返回 false。因此,在 Global.asax 中的 Application_AuthenticateRequest 和受限目录中 WebForm 的初始加载之后的某个地方,角色信息正在丢失,导致身份验证失败(注意:在 Page_Load 中,正确的身份验证票证仍然分配给 Context.User.Id - 只有角色正在丢失)。
我做错了什么,我怎样才能让它正常工作?
更新:我输入了下面的解决方案
database - 以单个十进制形式存储在数据库中的多种权限类型(角色)
我打算在这里问一个问题,关于我对某些用户/角色数据库表的设计是否可以接受,但经过一些研究,我遇到了这个问题:
这听起来像是一种创新方法,因此我将多个权限定义为单个小数(我假设为 int 数据类型),而不是多对多关系 users_to_roles 表。这意味着单个用户的所有权限都在一行中。在您阅读其他问题和答案之前,它可能没有意义
我无法解决这个问题。有人可以解释一下转换过程吗?这听起来“正确”,但我只是不知道如何在角色进入数据库之前将其转换为小数,以及当它从数据库中出来时如何转换回来。我正在使用 Java,但如果你把它去掉,那也很酷。
这是另一个问题被删除的机会的原始答案:
“就个人而言,我有时会使用标记的权限枚举。这样你就可以对枚举项使用 AND、OR、NOT 和 XOR 位运算。
然后,您可以使用 AND 位运算符组合多个权限。
例如,如果用户可以查看和编辑用户,则操作的二进制结果是 0000 0011 转换为十进制是 3。然后您可以将一个用户的权限存储到数据库的单个列中(在我们的例子中它会是 3)。
在您的应用程序中,您只需要另一个按位运算 (OR) 来验证用户是否具有特定权限。”
postgresql - PostgreSQL 8.3 权限未更新 - 使用错误?
我在向 PostgreSQL 8.3 中的另一个用户授予权限时遇到问题。虽然 GRANT 命令没有给我任何错误,但权限并没有显示出来。我需要“冲洗”它们吗?
.net - 在个人资料中获取具有特定值的用户
我在我的 vb .net 应用程序中使用成员身份和角色进行身份验证。我们在应用程序中有大约 5 个角色,其中某些角色填写特定的配置文件值。示例是角色是商店,配置文件值是商店编号。显然,如果您为总部工作,您没有商店编号,所以我不在乎。每个商店也可以有超过 1 名员工。
我需要获取特定商店编号的用户。这意味着我只希望属于商店编号 101 的用户显示该列表。我们现在这样做的方式是遍历所有用户并将符合条件的用户添加到排序列表中。这个功能,但问题是当你开始传递大约 3,000 个用户时。它只是变得缓慢。
你们会如何找到不同的方法呢?我真的不想做自定义存储过程或更改底层类,因为我担心这一切都会在更高版本的 .net 上中断,因为它们会更改成员资格和角色。
membership - 如何在 ASP.NET 中将用户与他们各自的文件夹联系起来?
当用户A上传文件时,他的文件将上传到文件夹A,当用户B时,将上传到文件夹B,依此类推。ASP.NET 中的角色/配置文件。文件夹将是预先存在的。任何人?
asp.net - 客户可配置的 asp.net 网站安全性,可对页面和按钮访问进行细粒度控制
我有一个 ASP.NET 2.0 [还没有 ajax...] 网站,它将以编译的形式部署在多个客户网站上。通常,该站点将仅是 Intranet。一些客户信任他们所有的人,不关心限制对站点和/或页面功能的访问,其他人不信任任何人,只希望某些人和/或组能够查看某些页面、单击某些按钮等人。
我可以做一些本土解决方案,可能从数据库表驱动访问权限,但在我走这条路之前,我想我会问:对于这种情况,什么是好的解决方案?最好可以在 web.config 文件和/或数据库中完全控制,因为重建网站是不可能的(对于客户端,我不想一遍又一遍地为他们做)。Active Directory 集成将是一个奖励,但不是必需的(除非这更容易)。
作为一个起点,我认为网站中的每个页面/功能点都被赋予一个身份并与一个权限组相关联......
编辑:web.config 授权部分允许/拒绝按角色和用户访问是好的,但这只是问题的一半 - 另一半是控制对每个页面上的单个方法(按钮等)的访问。例如,一些用户可以查看 whatchamacallits,而其他用户则可以编辑、创建、删除或禁用/启用它们。所有这些按钮/链接/操作都在视图页面上......
[理想情况下,我会让禁用的按钮不可见,但这在这里并不重要]
编辑:到目前为止有一些很好的建议,但还没有完整的解决方案 - 仍然倾向于数据库驱动的解决方案......
- 安全权限需求属性会在按钮被点击时抛出异常,这不是一件友好的事情;我宁愿隐藏不允许用户使用的按钮
- LoginView 控件也很有趣,但需要多次复制大部分页面内容(每个角色一次),并且可能无法处理用户具有多个角色的情况 - 我不能假设角色是分层的,因为它们将由客户定义
编辑:平台是 Win2K/XP、Sql Server 2005、ASP.NET 2.0,不使用 AJAX
ruby-on-rails - 最佳基于角色的访问控制 (RBAC) 数据库模型
跟踪 Web 应用程序基于角色的访问控制的最佳数据库模式是什么?
我正在使用 Rails,但是 Google 链接的 RBAC 插件看起来没有维护(只有 300 次提交到 SVN;最新的是差不多一年前)。
这个概念很简单,可以从头开始实施,但又足够复杂和重要,值得一试。
那么其他人如何构建和实现他们的 RBAC 模型呢?
asp.net - 根据角色为网站实施不同视图的最佳方法是什么?
在 ASP.NET 中,执行以下操作的最佳方法是什么:
- 根据您的权利显示某些控制?
- 对于 gridview 控件,如何根据您的角色显示某些列?
我在考虑第 2 点,让数据来自数据库上的角色特定视图。
asp.net - 在我的代码隐藏类中,如何检索授权角色?
我的 web.config 中有以下内容:
在 RestrictedPage.aspx.cs 中,如何检索包含 Group1Admin、Group3Admin 和 Group7Admin 的允许角色集合?
这就是我问的原因:
web.config 正在处理对页面的授权。这很好用。但我将有几个这样的页面(比如 RestrictedPage.aspx、RestrictedPage2.aspx、RestrictedPage3.aspx)。这些页面中的每一个都将有我的自定义 web 控件。这些页面中的每一个都将具有不同的允许角色。我的 webcontrol 有一个下拉列表。下拉列表中的选择取决于用户角色和页面允许角色的交集。
如下所述,使用 XPath 搜索 web.config 可能会起作用。我只是希望有更多的框架-y。有点像站点地图。当我将角色放入我的 web.sitemap 时,我可以使用 SiteMap.CurrentNode.Roles 来获取它们(我的网站使用 Windows 身份验证,所以我不能使用 web.sitemap 进行安全调整,我宁愿只保留一个角色文件)。
database - Oracle 数据库角色 - 从没有模式标识符的模式的表中选择
哪个 Oracle 数据库角色将允许用户在不指定模式标识符的情况下从另一个模式中的表中进行选择?即,作为用户A-将A.table上的选择授予用户B;然后B可以-“从表中选择*”而不指定'A'。我们的一个数据库允许这样做,另一个返回“表或视图不存在”错误。