Merge pull request #820 from erikpique/feature/118
Token lifetime handling #118
This commit is contained in:
commit
01f6feb84d
@ -79,9 +79,16 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Controllers
|
|||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid)
|
||||||
{
|
{
|
||||||
var user = await _loginService.FindByUsername(model.Email);
|
var user = await _loginService.FindByUsername(model.Email);
|
||||||
|
|
||||||
if (await _loginService.ValidateCredentials(user, model.Password))
|
if (await _loginService.ValidateCredentials(user, model.Password))
|
||||||
{
|
{
|
||||||
AuthenticationProperties props = null;
|
var props = new AuthenticationProperties
|
||||||
|
{
|
||||||
|
ExpiresUtc = DateTimeOffset.UtcNow.AddHours(2),
|
||||||
|
AllowRefresh = true,
|
||||||
|
RedirectUri = model.ReturnUrl
|
||||||
|
};
|
||||||
|
|
||||||
if (model.RememberMe)
|
if (model.RememberMe)
|
||||||
{
|
{
|
||||||
props = new AuthenticationProperties
|
props = new AuthenticationProperties
|
||||||
@ -91,7 +98,7 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Controllers
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
await _loginService.SignIn(user);
|
await _loginService.SignInAsync(user, props);
|
||||||
|
|
||||||
// make sure the returnUrl is still valid, and if yes - redirect back to authorize endpoint
|
// make sure the returnUrl is still valid, and if yes - redirect back to authorize endpoint
|
||||||
if (_interaction.IsValidReturnUrl(model.ReturnUrl))
|
if (_interaction.IsValidReturnUrl(model.ReturnUrl))
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
using Microsoft.AspNetCore.Identity;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Authentication;
|
||||||
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.eShopOnContainers.Services.Identity.API.Models;
|
using Microsoft.eShopOnContainers.Services.Identity.API.Models;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.Services.Identity.API.Services
|
namespace Microsoft.eShopOnContainers.Services.Identity.API.Services
|
||||||
{
|
{
|
||||||
public class EFLoginService : ILoginService<ApplicationUser>
|
public class EFLoginService : ILoginService<ApplicationUser>
|
||||||
{
|
{
|
||||||
UserManager<ApplicationUser> _userManager;
|
private UserManager<ApplicationUser> _userManager;
|
||||||
SignInManager<ApplicationUser> _signInManager;
|
private SignInManager<ApplicationUser> _signInManager;
|
||||||
|
|
||||||
public EFLoginService(UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signInManager) {
|
public EFLoginService(UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signInManager)
|
||||||
|
{
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
_signInManager = signInManager;
|
_signInManager = signInManager;
|
||||||
}
|
}
|
||||||
@ -24,8 +26,14 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Services
|
|||||||
return await _userManager.CheckPasswordAsync(user, password);
|
return await _userManager.CheckPasswordAsync(user, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task SignIn(ApplicationUser user) {
|
public Task SignIn(ApplicationUser user)
|
||||||
|
{
|
||||||
return _signInManager.SignInAsync(user, true);
|
return _signInManager.SignInAsync(user, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task SignInAsync(ApplicationUser user, AuthenticationProperties properties, string authenticationMethod = null)
|
||||||
|
{
|
||||||
|
return _signInManager.SignInAsync(user, properties, authenticationMethod);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Authentication;
|
||||||
|
|
||||||
namespace Microsoft.eShopOnContainers.Services.Identity.API.Services
|
namespace Microsoft.eShopOnContainers.Services.Identity.API.Services
|
||||||
{
|
{
|
||||||
public interface ILoginService<T>
|
public interface ILoginService<T>
|
||||||
{
|
{
|
||||||
Task<bool> ValidateCredentials(T user, string password);
|
Task<bool> ValidateCredentials(T user, string password);
|
||||||
|
|
||||||
Task<T> FindByUsername(string user);
|
Task<T> FindByUsername(string user);
|
||||||
|
|
||||||
Task SignIn(T user);
|
Task SignIn(T user);
|
||||||
|
|
||||||
|
Task SignInAsync(T user, AuthenticationProperties properties, string authenticationMethod = null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user