gpt4 book ai didi

asp.net-core-2.0 - 带有注入(inject) SessionStore 的 AspNet Core CookieAuthentication

转载 作者:行者123 更新时间:2023-12-03 23:38:49 25 4
gpt4 key购买 nike

在将 ASPNetCore 1.1 项目迁移到 ASPNetCore 2.0 期间,我们偶然发现了 Cookie-AuthN 及其 SessionStore 的问题。 .

ASP.NET Core 1 允许我们做这样的事情:

public void ConfigureServices(...) {
Services.AddDistributedSqlServerCache(...);
Services.AddSingleton<DistributedCookieSessionStore>(); /// SQL based store
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory) {
var cookieOptions = app.ApplicationServices.GetRequiredService<IOptions<CookieAuthenticationOptions>>().Value;
cookieOptions.SessionStore = app.ApplicationServices.GetRequiredService<DistributedCookieSessionStore>();

app.UseCookieAuthentication(cookieOptions);
}

凌乱,但做它的工作。

现在使用 ASP.NET Core 2 app.UseAuthentication()没有允许修改选项的签名,并且我无法使用 DI 来获取 session 存储。

最佳答案

经过长时间的搜索,我遇到了这个讨论https://github.com/aspnet/Security/issues/1338他们提到的地方IPostConfigureOptions界面。我把它放在一起,这对我有用:

1) 实现接口(interface)IPostConfigureOptions<CookieAuthenticationOptions>

public class PostConfigureCookieAuthenticationOptions : IPostConfigureOptions<CookieAuthenticationOptions>
{
private readonly ITicketStore _ticketStore;

public PostConfigureCookieAuthenticationOptions(ITicketStore ticketStore)
{
_ticketStore = ticketStore;
}

public void PostConfigure(string name, CookieAuthenticationOptions options)
{
options.SessionStore = _ticketStore;
}
}

2) 将此实现注册到 Startup.ConfigureServices 中的容器中方法
services.AddSingleton<IPostConfigureOptions<CookieAuthenticationOptions>, PostConfigureCookieAuthenticationOptions>();

关于asp.net-core-2.0 - 带有注入(inject) SessionStore 的 AspNet Core CookieAuthentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45914143/

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