更新时间:2023-11-30 22:41:40
在您的signInManager
覆盖SignInAsync
方法中,此方法用于每个登录过程(本地或外部)
Inside your signInManager
overwrite the SignInAsync
method, this one is used in every login proccess (local or external)
public class ApplicationSignInManager : SignInManager<User, int>
{
public override async Task SignInAsync(User user, bool isPersistent, bool rememberBrowser)
{
if (!user.isDeleted)
{
await base.SignInAsync(user, isPersistent, rememberBrowser);
}
else
{
...
}
}
}
或创建一个自定义UserStore
并覆盖GetUserAggregateAsync
方法(在所有查找"方法内部调用):
Or create a custom UserStore
and override GetUserAggregateAsync
method (its called inside all "find" methods):
public class CustomUserStore : UserStore<ApplicationUser>
{
public CustomUserStore(ApplicationDbContext context) : base(context) { }
protected override async Task<ApplicationUser> GetUserAggregateAsync(Expression<Func<ApplicationUser, bool>> filter)
{
var user = await base.GetUserAggregateAsync(filter);
// if user is found but soft deleted then ignore and return null
if (user != null && user.IsDeleted)
{
return null;
}
return user;
}
}