gpt4 book ai didi

ASP.Net 成员(member)主体权限问题

转载 作者:行者123 更新时间:2023-12-02 14:38:06 26 4
gpt4 key购买 nike

我遇到了导致异常的 PrinciplePermissionAttribute 问题。我在 Load 方法上具有属性的任何页面在初始登录后都会立即抛出异常。

<PrincipalePermission(SecurityAction.Demand, role:="Level1")> _
Protected Sub Page_Load(ByVal sender As Object, ByVal e as System.EventArgs) Handles Me.Load
End Sub

这会引发异常请求主体权限失败

如果我删除此页面,则页面加载正常,并且我可以导航到具有相同属性的另一个页面,并且它可以完美地工作。另外,如果我使用成员(member)系统 Roles.IsUserInRole() 函数,我就没有问题。

我注意到,初次登录后,我的 Thread.CurrentPrincipal 类型为 GenericPrincipal,而不是 RolePrincipal。后续请求将显示正确的类型来代替通用类型。我尝试在 PostAuthenticate 事件中的 Global.asax 文件中强制执行此操作,但在发生这种情况后,asp.net 似乎正在设置 GenericPrincipal

关于如何修复此行为的任何想法,或者我是否坚持使用 Roles.IsUserInRole() 方法?

更新
在找到对管道中发生的事情的一些解释之后here我明白为什么在 Global.asax 中更改它没有帮助。我之前有一个原型(prototype)项目,我用它进行了测试,但无法在那里重现它。我确实想知道这是否与项目类型有关。原型(prototype)是一个网站项目,有问题的是一个 Web 应用程序项目。

我确实认为 GenericPrincipal 更改为 RolePrincipal 但仅在初始请求处理后才更改,这很奇怪。所以很难说它不起作用,就像它在我的“Page_Load”执行之前没有发生一样。

最佳答案

我认为您正在使用表单例份验证...

PrincipalPermission 属性检查 Thread.CurrentPrincipal。 Roles.IsUserInRole() 检查 HttpContext.Current.User。因此,如果它们不同,您可以在 Application_AuthenticateRequest 事件的 Global.asax 文件中更正此问题。

关于ASP.Net 成员(member)主体权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9830077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com