gpt4 book ai didi

asp.net-mvc - OnValidateIdentity session 为空 - Mvc Owin

转载 作者:行者123 更新时间:2023-12-01 19:56:44 28 4
gpt4 key购买 nike

目前,当我在 OnValidateIdentity 中访问 Session 时遇到问题 - HttpContext.Current.Session 为 null。怎么了?我的申请如下:

  • 我有 2 个项目:Mvc 与 WebApi

我希望用户在更改密码时注销 -> 更改安全标记。我实现为:Mvc 项目将验证 SecurityStamp 在用户请求时更改。我将从其他 webapi 网站获取 SecurityStamp 。这意味着我的 mvc 无法通过 webapi 直接访问数据库。我必须在授权 header 中输入 token 才能从 webapi 获取 securitystamp。但是,我无法从 session 访问 token ,当我成功登录时,我将 token 存储在 Session 中。代码示例:

public void ConfigureAuthentication(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
CookieSecure = CookieSecureOption.SameAsRequest,
LoginPath = new PathString("/Home"),
LogoutPath = new PathString("/Account/Logout"),
ExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = async ctx =>
{
var claim = ctx.Identity.FindFirst("SecurityStamp");
var accessToken = HttpContext.Current.Session["token"].ToString();

using (HttpClient httpClient = new HttpClient())
{
// Used accessToken variable for httpClient
// TODO Get security stamp from webapi . Ex :
string securityStampWebApi = "demo";
if (securityStampWebApi != claim.Value)
{
ctx.RejectIdentity();
}
}
}
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
}

建议其他实现我可以完成这个案例。

最佳答案

Cookie 中间件在 IIS 管道中的身份验证阶段运行,该阶段在 HttpContext 或 session 状态可用之前。所以你需要在没有它的情况下工作。

关于asp.net-mvc - OnValidateIdentity session 为空 - Mvc Owin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24593719/

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