Asp.net mvc 5 使用外部提供程序时如何记住MVC5中的登录
在使用OWIN的MVC5应用程序中,除了本地帐户之外,我们还使用外部登录(google)。当用户使用其本地帐户登录时,他可以激活该选项来记住他,因此他不必每次都重新登录。当他用他的谷歌账号登录时,他每次都必须新点击谷歌的外部登录按钮Asp.net mvc 5 使用外部提供程序时如何记住MVC5中的登录,asp.net-mvc-5,wif,owin,Asp.net Mvc 5,Wif,Owin,在使用OWIN的MVC5应用程序中,除了本地帐户之外,我们还使用外部登录(google)。当用户使用其本地帐户登录时,他可以激活该选项来记住他,因此他不必每次都重新登录。当他用他的谷歌账号登录时,他每次都必须新点击谷歌的外部登录按钮 是否有一个内置选项来激活“记住我”-也用于外部登录的选项?或者是否有安全的方法添加此功能?您只需将IsPersistent设置为true,即可在登录用户身份时完成此操作(您可能还希望为外部流添加某种类型的“记住我”复选框) AuthenticationManager
是否有一个内置选项来激活“记住我”-也用于外部登录的选项?或者是否有安全的方法添加此功能?您只需将IsPersistent设置为true,即可在登录用户身份时完成此操作(您可能还希望为外部流添加某种类型的“记住我”复选框)
AuthenticationManager.SignIn(新的AuthenticationProperties{IsPersistent=},);
跟进浩功的建议
您将在accountController.cs文件中找到有问题的代码行。默认功能是:
private async Task SignInAsync(ApplicationUser user, bool isPersistent)
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent}, identity);
}
要在所有外部提供程序中启用“记住我”功能,请更改行:
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent}, identity);
通过将isPersistent Variable更改为常量true:
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = <b>true</b>}, identity);
AuthenticationManager.SignIn(新的AuthenticationProperties(){IsPersistent=true},标识);
使用外部登录方法:
public async Task<ActionResult> ExternalConfirm(EnumLoginProviders loginProvider, string returnUrl)
{
var loginInfo = await MyAuthenticationManager.GetExternalLoginInfoAsync();
...
// Sign in the user with this external login provider if already logged in
var result = await SignInManager
.ExternalSignInAsync(loginInfo, isPersistent: <remember-me>);
if (result == SignInStatus.Success)
{
...
}
公共异步任务
我通常在我的网站中使用“isPersist=true”——大多数用户希望在重新进入需要识别的网站时自动登录
我想请您也研究一下这两个问题,因为我认为它们是直接相关的:和
public async Task<ActionResult> ExternalConfirm(EnumLoginProviders loginProvider, string returnUrl)
{
var loginInfo = await MyAuthenticationManager.GetExternalLoginInfoAsync();
...
// Sign in the user with this external login provider if already logged in
var result = await SignInManager
.ExternalSignInAsync(loginInfo, isPersistent: <remember-me>);
if (result == SignInStatus.Success)
{
...
}