问题标签 [roleprovider]
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.
asp.net - 是否可以使用 Microsoft 角色提供程序在运行时“临时”将用户添加到角色?
我正在实现一个自定义成员资格提供者和一个自定义角色提供者。它工作正常。我有一个自定义数据库,其中包含我的所有用户和所有角色以及大多数用户和角色之间的关联。在某些角色中,确定谁担任该角色的代码要复杂得多。这有点需要逐个用户完成,并且没有简单的方法可以返回具有这些其他角色之一的所有用户的列表。所以我想做的是在运行时将用户添加到角色中。因此,当用户登录时,我将从自定义角色提供者那里获得他们的大部分角色。但是我想在登录时运行一些额外的代码来检查它们是否也是这两个角色的一部分。如果是,那么我想将这两个角色添加到“临时”的用户中 - 用于会话。换句话说,我希望我的应用程序知道它们是这些角色的一部分,但我不希望提供者尝试将其保留回底层数据库。
我是否正确地考虑了这一点?这是正确的方法吗?这可以做到吗?
如果这不清楚或没有意义,请告诉我。
谢谢,科里
.net - 自定义角色提供程序的问题
此堆栈跟踪是由于“提供程序名称不能为空或为空”错误而出现的。
[ArgumentException:提供程序名称不能为 null 或为空。] System.Web.Security.Roles.Initialize() +2230205 System.Web.Security.RoleManagerModule.OnLeave(Object source, EventArgs eventArgs) +68 System.Web.SyncEventExecutionStep.System .Web.HttpApplication.IExecutionStep.Execute() +148 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
本质上,我正在创建自己的自定义角色提供程序,它继承了 SqlRoleProvider 类,我成功调用了 initialize 并确认它成功地完成了我的代码中的所有操作,但是 .Net 中的某些内容显然没有被初始化为“角色”对象我不能继承让我有些头疼...
有任何想法吗?
好的,我的解决方案是分层的,这意味着我也需要通过业务对象层提供安全性......为了做到这一点,我定义了以下内容:
--- 编辑 1 ---
我的代码:
在主装配中:
在提供程序组装中:
在这一点上,我希望能够通过调用 prov 来使用基类“RoleProvider”定义的任何东西。...
我省略了额外的代码,但基本上所有方法都被标记为“C20RoleProvider”类中的 RoleProvider 类的抽象方法。
我知道它看起来有点奇怪,但我想做的是将业务逻辑与提供者中的数据采集分开,数据提供者可以是任何东西(通过我的反射代码)业务逻辑类“C20RoleProvider”可以在业务框架中使用不用担心破坏任何东西并允许替换后端源(例如角色数据可以来自任何地方)。
这里还有很多事情要做,但基本上整个应用程序框架/业务对象层都以这种方式使用提供者从任何来源“提供”数据给核心业务逻辑。
asp.net - 处理嵌套组权限(ASP.NET 角色提供程序)
我们有一个安全模块,它基于组/角色成员资格,控制对 ASP.Net 中资源的权限。我已经构建了一个自定义 ASP.Net 角色提供程序,它可以查询 Active Directory 的组成员身份,并且由该模块使用。
对于每个请求,安全检查的工作方式如下(出于性能原因在某些地方使用缓存,但不包括在此列表中):
- 查询 AD 以获取用户组成员身份列表
- 查询数据库以获取有权访问所请求资源的用户和组的列表
- 将 AD 的结果与数据库的结果进行比较。如果用户明确拥有权限,或者用户所在的组拥有权限,则允许访问,否则不允许。
当我们有嵌套组时,问题就出现了。假设我们有两个组:ParentGroup和ChildGroup,其中ChildGroup是 Active Directory 中 ParentGroup 的成员,而我们的用户是ChildGroup的成员。根据上面的逻辑,如果我们让ChildGroup访问资源,那么用户也可以访问该资源。
现在逻辑上(无论如何对我来说)如果我们让ParentGroup访问资源,那么它的所有成员,以及递归获取的任何子组及其成员,也应该能够访问所述资源。但是相反,由于我的逻辑工作方式,他们无法访问资源。上面列表中的第 1 步没有看到ParentGroup它只看到了ChildGroup,第 2 步只看到了 ParentGroup而没有看到ChildGroup。
所以问题是,为了让它发挥作用,我应该如何“逻辑地”描述它,我应该在哪里解决问题,是否有一些方法比另一种更好?
asp.net - 带有 ASP.NET 身份验证的控制台应用程序
情况就是这样,我有一个控制台应用程序,它需要每天运行一次,并向需要身份验证的页面发出一些请求。这些页面托管在一个非常基本的 ASP.Net Web 应用程序中。
所以,我知道为了让请求成功通过,我必须通过服务器进行身份验证。因此,我已将控制台应用程序连接到我用于 Web 应用程序的 ASP.Net Membership Provider,它成功地确定了一组凭据是否有效。但是,在调用 Membership.ValidateUser() 之后,我提出的任何请求都会得到登录屏幕。在做了一些阅读之后,这似乎是因为我错过了重要的 cookie 信息,这些信息会保留我的登录名或你有什么。
我正在使用基本的 WebClient 来发出请求,然后读取/丢弃结果。
所以问题的实质是:是否有一种简单的方法来验证登录信息并保留它,以便我可以成功发出请求,或者这与我发现的其他两个问题完全相同,需要WebClient 向 login.aspx 页面发出“手动”登录请求并尝试从那里保留 cookie?
我引用的问题是:
从 WPF 应用程序对 ASP.NET MVC 用户进行身份验证
和
asp.net - asp.net 自定义角色提供程序休眠错误
你好,
我正在我的 nhibernate 应用程序中实现自定义角色提供程序我有一个存储库,每当我想访问 nhibernate 会话时我都会调用它。
所以当我的角色提供者初始化自己时
然后我覆盖
//然后我过滤等等
但是当这个函数被调用时,我总是得到一个错误,即 NHibernate 会话已关闭。我调试了休眠源代码,结果发现这里的会话与我的控制器中的会话有不同的 guid(我也在使用 ASP.NET MVC)。当我到达这里时,这个特定的会议已经结束。不知道谁关了 我知道它是在应用程序启动时启动的,然后才启动。
有谁知道我做错了什么?我仍想在此提供程序中使用 Nhibernate,但不再收到错误消息。谢谢
c# - 如何使用 ASP.NET Membership Provider 类
我想为我自己的数据库使用 asp.net 会员提供程序 我有自己的表
这是我所做 的,我用我自己的 write all overids 方法扩展了会员提供程序类。 使用会员提供者类进行自定义使用是正确的方法吗?我也扩展了角色管理类。
asp.net-mvc-2 - ASP.NET MVC,两个用户的一个角色,每个用户的行为几乎没有什么不同
我们已经实现了自定义角色提供者。这使我们能够使用角色限制对我们网站部分的访问。现在我们有两个用户具有管理员角色的情况。但是一个user1可以添加评论,而user2不能添加评论(user1和user2都有管理员角色)。
解决这个问题的最佳方法是什么?
我们可以添加像 Administrator.AddComment 这样的角色并将其放入控制器操作中吗?
asp.net - ASP.NET 角色提供者:使用 sql server 而不是 sql express?
我想使用完整的 SQL Server 2005 作为我的角色提供者的数据存储。
我使用向导安装了 aspnetdb。
在我的应用程序中,我添加了以下连接字符串
然后我将我的角色提供者配置如下:
我像这样以编程方式创建角色:
但是当我从 SQL 管理工作室检查我的 aspnetdb 时,我发现表aspnet_Roles没有记录,并且没有插入角色。
那么这些步骤有什么问题或缺少什么吗?
谢谢
c# - 使用以下命令查找所有不在特定角色中的用户:Roles.GetUsersInRole 或不同的
我需要使用特定角色中不存在的用户列表填充数组并计算结果。
目前我使用此代码,但我无法获得“CMS-ADMINISTRATOR”角色之外的用户。
知道如何做到这一点并更好地编写计数部分吗?
asp.net - VS2010 中的 ASP.NET 用户/角色管理 - 跳过 SQL Express 版本并直接使用 SQL Server 2008 R2
在学习 ASP.NET 用户管理的细节时,我了解到 VS 中的默认设置是使用 SQL Server Express .mdf文件来保存需要保存的数据。这对我部署站点时没有帮助,因为我在 IIS 7.5 服务器上运行 SQL Server 2008 R2。我知道我可以运行命令行工具来自动创建用户管理所需的数据库表,并将在我的开发机器上执行此操作,但是我如何告诉我现有的,在 VS 中的开发代码忽略现有的 Express .mdf文件并查看新创建的数据库表?