问题标签 [iprincipal]
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.
mocking - 模拟 Iidentity 和 IPrincipal
我只想问在我的单元测试中提供这些对象的更好方法是什么。
在我的单元测试中,我正在测试 CSLA 对象。CSLA 对象在内部使用 ApplicationUser 对象的一种属性和一种方法。ApplicationUser 继承自 IPrincipal。属性是: 1) ApplicationContext.User.IsInRole(...) - 该方法是 IPrincipal 的一部分 2) ApplicationContext.User.Identity.Name - 名称是 IIdentity 的属性,它是 ApplicationUser aka IPricipal 的一部分
我的测试示例(使用 RhinoMock):
我对第二个值(身份名称)有一点问题。我试图模拟它,但在将模拟的 IIdentity 分配给 ApplicationUser 时遇到问题,因为它是在内部完成的。有人告诉我自己创建一些 IIPrincipal(包括 IIdentity),根本不要嘲笑它。这是肯定可以做到的。不确定这是否可以称为存根使用?
那么你能建议我如何处理 IPrincipal 和 IIdentity 吗?任何建议都非常受欢迎。
c# - WindowsPrincipal.IsInRole() 未返回预期结果
所以这是我当前的代码:
这是几个月前有人完成的,我很难理解为什么它不起作用。该公司最近刚刚从一个域名转移到另一个域名。所以我很好奇 p.IsInRole("String") 函数将使用什么域控制器。我假设无论计算机使用什么,它都会使用默认 DC。
奇怪的是,办公室中运行此程序的计算机可能位于 2 个单独的域中。在List<string>
对象中,我有两个可能的域。因此它可以包含诸如“domainA\groupA”、“domainA\userB”、domainB\groupC 和/或“domainB\userD”之类的项目。
所以我的主要问题是 IsInRole 函数永远不会返回 true。我知道它应该,我什至用 domainA\Domain 用户对其进行了测试,但仍然得到一个错误的返回。
有任何想法吗?更改代码是可能的,但不是想要的。我不是 100% 我什至可以编译它...
openid - 将用户 ID 存储在 Principal 或 Identity 中?ASP.Net/OpenID
我有一个使用表单身份验证的 ASP.Net MVC Web 应用程序。我正在使用 OpenID 进行身份验证。
目前,我将 openID url 存储在Name
standard 中GenericIdentity
。我还希望能够轻松访问用户的数据库 ID。
我可以通过覆盖该Application_AuthenticateRequest
函数来制作自定义提供者或身份。
我的问题是用户的数据库 uid 应该进入主体还是身份?
Identity 的 Name 属性应该是 openid url(用户可以有很多,但我想在每个页面上显示它)还是数据库 uid?
c# - IPrincipal 的文件和目录安全性
我需要通过 Directory.GetDirectories() 和 Directory.GetFiles() 方法访问当前 IPrincipal 可以访问的文件和目录,而不列出其他文件。该进程本身作为 NETWORK SERVICE 运行,因此在这些调用期间它必须将主体更改为当前用户(通过 IPrincipal)。
我试图在文件访问部分之前将 Thread.CurrentPrincipal 更改为新的 IPrincipal ,但它似乎没有任何区别。
还有什么我可以做的,还是我错过了什么?
asp.net - ASP.NET MVC - 设置自定义 IIdentity 或 IPrincipal
我需要做一些相当简单的事情:在我的 ASP.NET MVC 应用程序中,我想设置一个自定义的 IIdentity / IPrincipal。哪个更容易/更合适。我想扩展默认值,以便我可以调用类似User.Identity.Id
and的东西User.Identity.Role
。没什么特别的,只是一些额外的属性。
我已经阅读了大量的文章和问题,但我觉得我让它变得比实际更难。我以为这很容易。如果用户登录,我想设置自定义 IIdentity。所以我想,我将Application_PostAuthenticateRequest
在我的 global.asax 中实现。但是,在每个请求上都会调用它,并且我不想在每个请求上都调用数据库,因为它会从数据库中请求所有数据并放入自定义 IPrincipal 对象。这似乎也非常不必要,很慢,而且在错误的地方(在那里进行数据库调用),但我可能是错的。或者这些数据还来自哪里?
所以我想,每当用户登录时,我都可以在我的会话中添加一些必要的变量,我将它们添加到Application_PostAuthenticateRequest
事件处理程序中的自定义 IIdentity 中。但是,我Context.Session
的null
存在,所以这也不是要走的路。
我已经为此工作了一天,我觉得我错过了一些东西。这应该不难做到,对吧?我也对随之而来的所有(半)相关内容感到有些困惑。MembershipProvider
, MembershipUser
, RoleProvider
, ProfileProvider
, IPrincipal
, IIdentity
, FormsAuthentication
.... 我是唯一一个觉得这一切都非常混乱的人吗?
如果有人能告诉我一个简单、优雅、高效的解决方案,可以在 IIdentity 上存储一些额外的数据,而不需要额外的模糊......那就太好了!我知道关于 SO 有类似的问题,但如果我需要的答案在那里,我一定忽略了。
serialization - 当用户在 ASP.NET 中被拒绝时,“CustomIdentity”上的 SerializationException
我尝试在我们现有的数据库之上实现 ASP.NET 身份验证和授权。我们有一个网站调用网络服务来获取其数据。要使用网络服务,我需要提供用户名和密码。知道了这一点,我决定实现 IIdentity 和 IPrincipal 来存储加密的密码,并能够在执行 web 服务调用时提供它。将来,我们可能希望更多地使用 asp.net 的内置安全性,因此我实现了成员资格和角色提供程序并覆盖了我所需要的(ValidateUser 和 GetRoles)虽然,在验证用户之后感谢成员资格提供程序实现我仍然将我自己的 CustomIdentity 设置为 Context.User 以便能够在需要时检索其密码。
只要允许用户访问该页面,它就可以完美运行。但是当用户被拒绝时,框架不会抛出 AccessDeniedException,而是在我的 CustomIdentity 上抛出序列化异常。我发现了一个完全相似的行为,并在此链接上描述了更多详细信息,但没有发布任何答案。
我的例外与上面的链接完全相同
同时使用成员资格和自定义 IIdentity 和 IPrincipal 是否正确?如果没有,如果我使用成员资格和角色提供者,在哪里添加密码或其他用户数据等属性?
最好的祝福,
斯蒂芬·埃布雷希
asp.net-mvc - ASP.NET MVC 自定义 IPrincipal 注入
我正在使用 ASP.NET MVC 1.0 开发一个应用程序,并且正在尝试将自定义 IPrincipal 对象注入到 HttpContext.Current.User 对象中。
对于传统的 WebForms 应用程序,我使用 Application_AuthenticateRequest 事件来执行此操作,如下所示。
因此,使用它,我可以通过将 User 对象显式转换为 SiteUser 类型来访问我的自定义 IPrincipal。实际上,我是通过拥有一个所有 Pages 都从其继承的自定义类来做到这一点的,它在幕后为我做了这件事。
无论如何,我的问题是,使用 ASP.NET MVC 时,Application_AuthenticateRequest 似乎会在发出任何请求时触发(对于 JS 文件、图像等),这会导致应用程序死亡。
关于如何将自定义 IPrincipal 注入 ASP.NET MVC 1.0 中的 HttpContext.Current.User 对象的任何帮助或建议将不胜感激。我确实在 SO 上看到了以下帖子,但它似乎没有满足我想要实现的目标:ASP.NET MVC - Set custom IIdentity or IPrincipal
TIA。
asp.net - ASP.net 网络服务
我正在使用一个 Web 服务,它在登录时设置 Thread.CurrentPrincipal 对象,不久之后,当同一 Web 服务的另一个 Web 方法访问 Thread.CurrentPrincipal 时,它的不同/重置
有人可以告诉我这是预期的还是来自同一客户端的不同 webmethod 调用可以访问相同的 Thread.CurrentPrincipal 对象
谢谢
.net - Asp.NET 主体 WebORB HttpHandler
我有一个 Flex-WebORB-Asp.NET 应用程序。登录时,有一个 AuthenticationHandler 实现了 WebORB 接口:
所以我创建了一个 Principal 并返回它。WebORB 使用 Principal 检查远程方法调用的身份验证和授权。
现在,在这一点上,如果我检查它是什么HttpContext.Current.User.Identity
,它是一个 WindowsIdentity。
到目前为止,一切都很好。稍后,通过 WebORB 完成远程调用,我通过调用获取登录用户的 ID:
所以我猜 WebORB 会确保每次远程调用都设置了线程的标识。
问题是,当我调用 HttpHandler(检索图像)时,我还尝试使用 获取登录用户的 id Thread.CurrentPrincipal.Identity.Name
,但这不起作用。可能是因为使用 HttpHandler,WebORB 不会起作用。
您将如何解决这个问题,以便我可以在两种情况下以相同的方式获取登录用户的 ID?把它放在一个会话对象中?你能改变HttpContext.Current.User.Identity
吗?不应该HttpContext.Current.User.Identity
和 一样Thread.CurrentPrincipal.Identity.Name
吗?
ps:用户不在活动目录中。