且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将软删除添加到“身份用户"表

更新时间: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;
    }
}