我正在使用ASP.Net Core和MS Identity,我试着理解为什么在每次部署后登录用户都会被注销.我在IIS 8.5上运行
我一直在尝试此线程中的方法(设置静态机器密钥) ASP.NET Identity 2在部署后 通过在IIS UI中的服务器级别生成静态密钥并将以下内容添加到网站的web.config来重新登录:
<system.web>
<machineKey validationKey="XXX"
decryptionKey="XXX"
validation="SHA1" decryption="AES"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在:
但我也这样说:
什么可以导致用户注销?有关如何避免这种情况的任何想法?
我使用RC1位和外部(Google)身份验证,没有Identity.EntityFramework.
在登录期间,我设置了"记住我"标志.
登录用户幸存浏览器重启(我看到cookie设置为14天后过期)和网站重启.
但是经过一段时间不活动(大约15分钟)后,无论浏览器/站点是否重启,刷新页面都会导致退出,日志说:
info: Microsoft.AspNet.Authentication.Cookies.CookieAuthenticationMiddleware:
AuthenticationScheme: Microsoft.AspNet.Identity.Application signed out.
AuthenticationScheme: Microsoft.AspNet.Identity.External signed out.
AuthenticationScheme: Microsoft.AspNet.Identity.TwoFactorUserId signed out.
Run Code Online (Sandbox Code Playgroud)
这看起来像以前的ASP中的"会话",但我不在这里使用任何会话.
这是我的本地开发者机器,没有IIS,直接将Kestrel连接到5000端口,所以这不是数据保护问题
为什么用户被迫退出?
更新:我的Startup.cs文件:
public void ConfigureServices(IServiceCollection services)
{
....
var identityBuilder = services
.AddIdentity<User, UserRole>(options =>
{
options.User.AllowedUserNameCharacters = null;
options.Cookies.ApplicationCookie.LoginPath = "/user/login";
options.Cookies.ApplicationCookie.LogoutPath = "/user/logout";
});
identityBuilder.Services
.AddScoped<IUserStore<User>, SportCmsDb>(serviceProvider => serviceProvider.GetService<SportCmsDb>())
.AddScoped<IRoleStore<UserRole>, SportCmsDb>(serviceProvider => serviceProvider.GetService<SportCmsDb>());
identityBuilder
.AddDefaultTokenProviders();
....
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
....
app.UseIdentity();
app.UseGoogleAuthentication(options =>
{
options.ClientId = Configuration["OAuth:Google:ClientId"];
options.ClientSecret …Run Code Online (Sandbox Code Playgroud)