问题标签 [genericprincipal]
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 - 扩展 System.Web.HttpContext.User
我想扩展 System.Web.HttpContext.User 对象(ASP.NET/VB.NET),以便它包含除名称之外的其他字段。我知道我可以创建一个继承 System.Security.Principal.GenericPrincipal 类的对象,但是如何以可用的方式将其存储在 Current.User 对象中。即,我可以做类似的事情Current.User.UserID
。
到目前为止,为了实现这一点,我已经通过使用 | 创建了一个笨拙的解决方法。在 User.Name 属性中分隔字符串,然后拆分它们,但这有点荒谬。
有什么建议么?
谢谢!
编辑:我尝试了以下方法无济于事:
在我的 Global.asaxApplication_AuthenticateRequest
函数中设置对象,如下所示:
在需要对象的地方直接转换,如下所示:
我也尝试过 CType,但它没有用......我的错误是
[InvalidCastException:无法将“System.Security.Principal.GenericPrincipal”类型的对象转换为“myProject.CurrentUser”类型。]
我在这里失去理智...... :(谢谢大家......
任何人?
wpf - WPF 中的 My.User.IsAuthenticated 错误
我不确切知道如何解释它,但基本上这是我的问题可以重现的方式:
- 在 VB.NET 中创建 WPF Windows 应用程序项目(不要创建,继续阅读,除非你不相信我......)
- 单击 Window 的标题以创建 Window.Loaded 事件处理程序并导航到它。
- 将以下内容添加到事件处理程序:
My.User.CurrentPrincipal = New GenericPrincipal( _
New GenericIdentity("username"), Nothing)
Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated
MessageBox.Show(authenticated) 'True' - 返回到窗口设计器并在 Window1 中添加一个 Button。
- 单击 Button 以创建其 Click 事件处理程序并导航到它。
- 向其中添加以下内容:
Dim authenticated = My.User.CurrentPrincipal.IsAuthenticated
MessageBox.Show(authenticated) 'False' - 运行应用程序,查看结果
- 为什么现在它是假的!?!?
更新:我在http://connect.microsoft.com/WPF/feedback/ViewFeedback.aspx?FeedbackID=513731报告了一个错误,请投票或发布解决方法,并在您这样做时更新我,在此先感谢。
欢迎任何解决方法!
asp.net-mvc - 如何在 ASP.NET MVC 中为 HttpContext.User 赋值?
我写了一个如下的控制器:
登录后,我可以在其他控制器中通过 User.Identity.Name 获取用户名。但是 User.IsInRole("role1") 总是返回 false。
如何为用户分配值,我不想使用会员资格...
asp.net - HttpContext 用户值自行改变?
我正在开发一个 ASP.Net 2.0 应用程序,并且遇到了一个涉及 HttpContext 用户的奇怪问题。当我转到特定页面/目录时,它似乎会自行改变。
我们所有的页面都继承自一个基本页面。在该基本页面的 Page_Load() 方法中,我们运行授权检查以查看用户是否可以看到他们要去的页面。
我们检索用户以使用以下代码进行检查:
当我进入这个不寻常的目录时,用户值不是我,而是我从未听说过的其他用户名。此用户名无权查看这些页面,因此授权失败。
这个神秘的目录不是虚拟网络,只是我们网站中的一个常规目录,但是我注意到它有自己的 Web.Config 文件。我猜这是造成这里麻烦的原因。
我的问题是,我如何进一步调查这一点,以确定当我转到此目录时用户值发生了什么变化?
[编辑] -- 当我删除或重命名此目录中的 web.config 文件时,用户值不再更改。但是,正如下面评论中提到的那样,它没有任何价值,所以我不确定 Principal.User 值如何仅根据文件的存在而改变?一定是我当然想念的东西。
c# - http.context.user 和 thread.currentprincipal 之间的区别以及何时使用它们?
我最近遇到了在 Visual Studio 2008 下运行 asp.net Web 应用程序的问题。我收到错误“成员的类型未解决...customUserPrincipal”。跟踪各种讨论组,当您针对 Thread.CurrentPrincipal 分配自定义主体时,Visual Studio 的 Web 服务器似乎存在问题。
在我的代码中,我现在使用...
我很高兴我把错误排除在外,但它引出了一个问题“这两种设置委托人的方法有什么区别?”。还有其他与差异相关的 stackoverflow问题,但它们没有涉及这两种方法的细节。
我确实找到了一篇引人入胜的帖子,其中包含以下宏大的评论,但没有任何解释来支持他的断言……
对所有 Web (ASPX/ASMX) 应用程序使用 HttpConext.Current.User。
将 Thread.CurrentPrincipal 用于所有其他应用程序,例如 winForms、控制台和 Windows 服务应用程序。
你们中的任何一个安全/dot.net 专家都可以对这个主题有所了解吗?
c# - 使用 MVC 在 GenericPrincipal 中设置代理用户,同时保留旧身份
我有一个网站,允许一些用户作为其他用户代理。当他们这样做时,他们应该看到整个站点,就像他们代理的用户所在的位置一样。我通过更改当前用户对象来做到这一点
这段代码对我来说很好。
在站点上,为了代理,用户在我的 _layout 文件中呈现的下拉列表中选择一个值,以便它出现在所有页面上。
SetProxyUsers 视图如下所示:
}
对此的控制器操作如下所示
所有这些都有效(除了 originalUserID 变量,我放在这里以象征我接下来要做什么。
我的问题是下拉列表中的值是基于登录用户的。因此,当我使用代理更改用户时,我还会更改代理下拉列表中的值(如果不允许“新”用户进行代理,则要么消失,要么显示“新”用户的可用代理用户列表)。
我需要让这个选择列表保持不变。如何存储原始用户的 ID?我可以将它存储在会话变量中,但我不想弄乱潜在的超时问题,所以这是最后的手段。
请帮忙,如果问题有任何不清楚的地方,请告诉我。
更新
我没有意识到HttpContext
每个帖子都设置了。我之前并没有真正使用过这种东西,并且出于某种原因假设我正在为整个会话设置值(愚蠢,我知道)。但是,我使用的是 Windows 身份验证。如何更永久地更改用户(只要浏览器处于打开状态)?我假设我不能使用 FormAuthentication cookie,因为我使用 windows 作为我的身份验证模式,对吗?
c# - 如何设置自动创建的线程的 GenericPrincipal C#
我在应用程序中有代码
但问题是当我的应用程序运行时,会自动创建一些线程,但原理与上述不同。如何设置?
c# - 如何在基类和派生类的 PrincipalPermission 中应用 OR
我有一个基类。
并派生出一个。
我想让具有“开发者”权限的用户创建派生对象。但我无法做,因为基类有管理员权限。
管理员应该能够创建所有派生类的对象。所以我想把权限放在管理员的基类中。
我该如何解决这个问题。
asp.net-mvc-5 - MVC 5 - 使用 GenericPrincipal 添加角色 如何检索用户的所有角色
我正在使用 MVC 5 + Windows 身份验证 + 自定义角色,像这样
一切正常,意味着我可以做到
我的问题是如何检索用户的所有角色?请记住,我没有使用 RoleManager。