gpt4 book ai didi

c# - HttpContext.User 设置正确,然后被下一个请求丢失/替换

转载 作者:行者123 更新时间:2023-11-30 17:43:19 26 4
gpt4 key购买 nike

我已经实现了自定义 AuthCheckAttribute并在我的应用程序中全局使用它。

我已经验证控制流是正确的并且 AllowAnonymousAttribute 得到了正确的遵守。

在我的登录操作处理程序中,我将当前 User 设置如下:

//This user is an NHibernate entity representing a user of the
//app. AuthUser takes the Identity.Name from here.
HttpContext.User = AuthUser.CreateAuthUser(user);

如果用户名:密码组合有效,AuthUser.CreateAuthUser() 返回一个 IPrincipal 和一个返回 true 的 IIdentity 用于 IsAuthenticated

设置后,登录操作处理程序重定向到用户最初要去的页面,现在在 AuthCheckAttribute.OnAuthentication() 方法中,context.HttpContext.User 设置为 System.Security.Principal.WindowsPrincipal 的实例(并且 IsAuthenticated 返回 false)而不是 AuthUser 我在我的登录处理程序。

我做错了什么?问题似乎是当执行再次到达 AuthCheckAttribute.OnAuthentication() 时,我在登录操作处理程序中设置的 User 丢失/被替换。

我有一个类 AuthUser : IPrincipalAuthIdentity : IIdentity。调用 AuthUser.CreateAuthUser(user) 会正确实例化 AuthUserAuthIdentity 类,因此没有问题。

配置:MVC5、.Net 4.5

最佳答案

session 不是必需的。您可以使用加密的用户 ID 在浏览器中存储一个 HTTP only cookie。在您的过滤器中,检查此 cookie 并使用存储的用户 ID 重新加载您的用户并将其设置在 HttpContext 中。

关于c# - HttpContext.User 设置正确,然后被下一个请求丢失/替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31133773/

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