问题标签 [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.

0 投票
2 回答
4842 浏览

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”类型。]

我在这里失去理智...... :(谢谢大家......

任何人?

0 投票
1 回答
662 浏览

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报告了一个错误,请投票或发布解决方法,并在您这样做时更新我,在此先感谢。

欢迎任何解决方法!

0 投票
2 回答
3594 浏览

asp.net-mvc - 如何在 ASP.NET MVC 中为 HttpContext.User 赋值?

我写了一个如下的控制器:

登录后,我可以在其他控制器中通过 User.Identity.Name 获取用户名。但是 User.IsInRole("role1") 总是返回 false。

如何为用户分配值,我不想使用会员资格...

0 投票
0 回答
300 浏览

asp.net - HttpContext 用户值自行改变?

我正在开发一个 ASP.Net 2.0 应用程序,并且遇到了一个涉及 HttpContext 用户的奇怪问题。当我转到特定页面/目录时,它似乎会自行改变。

我们所有的页面都继承自一个基本页面。在该基本页面的 Page_Load() 方法中,我们运行授权检查以查看用户是否可以看到他们要去的页面。

我们检索用户以使用以下代码进行检查:

当我进入这个不寻常的目录时,用户值不是我,而是我从未听说过的其他用户名。此用户名无权查看这些页面,因此授权失败。

这个神秘的目录不是虚拟网络,只是我们网站中的一个常规目录,但是我注意到它有自己的 Web.Config 文件。我猜这是造成这里麻烦的原因。

我的问题是,我如何进一步调查这一点,以确定当我转到此目录时用户值发生了什么变化?

[编辑] -- 当我删除或重命名此目录中的 web.config 文件时,用户值不再更改。但是,正如下面评论中提到的那样,它没有任何价值,所以我不确定 Principal.User 值如何仅根据文件的存在而改变?一定是我当然想念的东西。

0 投票
3 回答
21540 浏览

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 专家都可以对这个主题有所了解吗?

0 投票
2 回答
635 浏览

c# - 使用 MVC 在 GenericPrincipal 中设置代理用户,同时保留旧身份

我有一个网站,允许一些用户作为其他用户代理。当他们这样做时,他们应该看到整个站点,就像他们代理的用户所在的位置一样。我通过更改当前用户对象来做到这一点

这段代码对我来说很好。

在站点上,为了代理,用户在我的 _layout 文件中呈现的下拉列表中选择一个值,以便它出现在所有页面上。

SetProxyUsers 视图如下所示:

}

对此的控制器操作如下所示

所有这些都有效(除了 originalUserID 变量,我放在这里以象征我接下来要做什么。

我的问题是下拉列表中的值是基于登录用户的。因此,当我使用代理更改用户时,我还会更改代理下拉列表中的值(如果不允许“新”用户进行代理,则要么消失,要么显示“新”用户的可用代理用户列表)。

我需要让这个选择列表保持不变。如何存储原始用户的 ID?我可以将它存储在会话变量中,但我不想弄乱潜在的超时问题,所以这是最后的手段。

请帮忙,如果问题有任何不清楚的地方,请告诉我。

更新

我没有意识到HttpContext每个帖子都设置了。我之前并没有真正使用过这种东西,并且出于某种原因假设我正在为整个会话设置值(愚蠢,我知道)。但是,我使用的是 Windows 身份验证。如何更永久地更改用户(只要浏览器处于打开状态)?我假设我不能使用 FormAuthentication cookie,因为我使用 windows 作为我的身份验证模式,对吗?

0 投票
0 回答
485 浏览

c# - 如何设置自动创建的线程的 GenericPrincipal C#

我在应用程序中有代码

但问题是当我的应用程序运行时,会自动创建一些线程,但原理与上述不同。如何设置?

0 投票
1 回答
257 浏览

c# - 如何在基类和派生类的 PrincipalPermission 中应用 OR

我有一个基类。

并派生出一个。

我想让具有“开发者”权限的用户创建派生对象。但我无法做,因为基类有管理员权限。

管理员应该能够创建所有派生类的对象。所以我想把权限放在管理员的基类中。

我该如何解决这个问题。

0 投票
1 回答
377 浏览

security - MSTest 请求主体权限失败

我在这个帖子上看了非常好的内容,它并没有解决我的问题。MSTEST PrincipalPermission

我的课:

我的测试:

这现在有效。

0 投票
0 回答
647 浏览

asp.net-mvc-5 - MVC 5 - 使用 GenericPrincipal 添加角色 如何检索用户的所有角色

我正在使用 MVC 5 + Windows 身份验证 + 自定义角色,像这样

一切正常,意味着我可以做到

我的问题是如何检索用户的所有角色?请记住,我没有使用 RoleManager。