我使用ASP.NET 5和MVC6。我正在使用Identity 3.0,但我需要知道如何使它适用于许多Web服务器。
可以将会话存储在其他地方吗?数据库?在MVC5中你是在web.config中做到的,但我没有在MVC6中找到有关它的信息。
这是我在Startup.cs中的代码
app.UseCookieAuthentication(options =>
{
options.AutomaticAuthenticate = true;
options.LoginPath = new PathString("/Account/Login");
options.AutomaticChallenge = true;
});
谢谢!
答案 0 :(得分:3)
默认情况下,存储在cookie中的身份验证票证是自包含的:知道加密密钥足以检索原始票证(此过程中没有商店或数据库)。
要确保所有服务器都可以读取您的身份验证Cookie,您需要同步他们用来加密和解密身份验证票证的密钥环。这可以使用UNC共享来完成,如文档中所述:http://docs.asp.net/en/latest/security/data-protection/configuration/overview.html。
public void ConfigureServices(IServiceCollection services) {
services.AddDataProtection();
services.ConfigureDataProtection(options => {
options.PersistKeysToFileSystem(new DirectoryInfo(@"\\server\share\directory\"));
});
}
或者,您也可以提供自己的TicketDataFormat
来覆盖序列化/加密逻辑,但它绝对不是推荐的方法。