Merge pull request #5574 from sbwalker/dev
fix #5570 - multi-database installation authentication issue
This commit is contained in:
@ -31,11 +31,11 @@ namespace Oqtane.Security
|
|||||||
var userManager = context.HttpContext.RequestServices.GetService(typeof(IUserManager)) as IUserManager;
|
var userManager = context.HttpContext.RequestServices.GetService(typeof(IUserManager)) as IUserManager;
|
||||||
var user = userManager.GetUser(context.Principal.UserId(), alias.SiteId); // cached
|
var user = userManager.GetUser(context.Principal.UserId(), alias.SiteId); // cached
|
||||||
|
|
||||||
// check if user is valid, not deleted, has roles, and security stamp has not changed
|
// check if user is valid, not deleted, has roles, and security stamp has not changed for this tenant
|
||||||
if (user != null && !user.IsDeleted && !string.IsNullOrEmpty(user.Roles) && context.Principal.SecurityStamp() == user.SecurityStamp)
|
if (user != null && !user.IsDeleted && !string.IsNullOrEmpty(user.Roles) && (context.Principal.SecurityStamp() == user.SecurityStamp || context.Principal.SiteKey() != alias.SiteKey))
|
||||||
{
|
{
|
||||||
// validate sitekey in case user has changed sites in installation
|
// validate security stamp and sitekey (in case user has changed tenants/sites in installation)
|
||||||
if (context.Principal.SiteKey() != alias.SiteKey || !context.Principal.Roles().Any())
|
if (context.Principal.SecurityStamp() != user.SecurityStamp || context.Principal.SiteKey() != alias.SiteKey || !context.Principal.Roles().Any())
|
||||||
{
|
{
|
||||||
// refresh principal
|
// refresh principal
|
||||||
var identity = UserSecurity.CreateClaimsIdentity(alias, user);
|
var identity = UserSecurity.CreateClaimsIdentity(alias, user);
|
||||||
|
Reference in New Issue
Block a user