我正在使用IdentityServer3。我有3个客户端应用程序。2个应用程序是在.NET核心中开发的,1个是在完整的.NET中开发的。
在登录屏幕上,如果用户选中
remember me
选项,则用户在应用程序之间切换时不必重新登录。如果
所以基本上,当用户检查
Remember Me
选项设置持久cookie。(我猜)
记得我吗
选项i始终希望cookie保持不变,以便用户在应用程序之间切换时不必重新登录。因此,根据我设置的文档
IsPersistent
AllowRemmberMe
到
false
public void Configuration(IAppBuilder app)
{
DataProtectionProvider = app.GetDataProtectionProvider();
app.Map("/identity", idsrvApp =>
{
var identityServerOptions = new IdentityServerOptions
{
SiteName = "my Login",
SigningCertificate = LoadCertificateFromWindwosStore(ApplicationConfig.SigningCertificateSubjectName),
RequireSsl = true,
Factory = new IdentityServerServiceFactory()
.Configure(),
AuthenticationOptions = new AuthenticationOptions()
{
CookieOptions = new IdentityServer3.Core.Configuration.CookieOptions()
{
//forced user to log back in after the Client (ie MVC App) cookie expires
ExpireTimeSpan = System.TimeSpan.FromSeconds(5),
SlidingExpiration = false,
//Indicates whether the authentication cookie is marked as persistent. Defaults to false.
IsPersistent = true,
AllowRememberMe = false
},
EnableAutoCallbackForFederatedSignout = true,
EnableSignOutPrompt = false
},
EventsOptions = new EventsOptions().Configure(),
EnableWelcomePage = ApplicationConfig.EnableWelcomePage
};
idsrvApp.UseIdentityServer(identityServerOptions);
});
}
但是,这不会创建持久cookie。这个
选项从登录屏幕消失,但用户在应用程序之间切换时始终必须登录。
更新1
正如我之前提到的
记得我吗
选中该复选框后,它将创建持久cookie,用户无需重新登录。所以在登录页面上,我将复选框编码为true并隐藏复选框。成功了。但我认为这是不对的。我想知道什么是正确的解决方案,为什么设置
为了让它工作,我设置了
ng-show
假的
和
ng-checked
到
true
<!--<div class="col-md-6" ng-show="model.allowRememberMe">-->
<div class="col-md-6" ng-show="false">
<input type="checkbox" id="rememberMe" name="rememberMe"
ng-model="model.rememberMe" value="true" ng-checked="true">
<span>Remember Me</span>
</div>