feige
2024-08-22 5e2ebcceae4bc34b46370f2c10110cd72e7f4fba
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -58,6 +58,60 @@
    @Autowired
    private ZfRegisterService registerService;
    public String loginWithoutValidate(String username, String password)
    {
        // 登录前置校验
        loginPreCheck(username, password);
        // 用户验证
        Authentication authentication = null;
        try
        {
            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
            AuthenticationContextHolder.setContext(authenticationToken);
            // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
            authentication = authenticationManager.authenticate(authenticationToken);
        }
        catch (Exception e)
        {
            if (e instanceof BadCredentialsException)
            {
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
                throw new UserPasswordNotMatchException();
            }
            else
            {
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
                throw new ServiceException(e.getMessage());
            }
        }
        finally
        {
            AuthenticationContextHolder.clearContext();
        }
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
        recordLoginInfo(loginUser.getUserId());
        SysUser sysUser = userService.selectUserByUserName(username);
        Long userId = sysUser.getUserId();
        // 生成token
        String token = tokenService.createToken(loginUser);
        SysUserRole1 sysUserRole = registerService.selectUserRole(userId);
        if(sysUserRole==null){
            //如果用户还没有被赋予角色,那就给一个默认是家庭成员的角色
            registerService.setRoleToUser(userId, 102L);
        }
        return token;
    }
    /**
     * 登录验证
     * 
@@ -105,6 +159,7 @@
        SysUser sysUser = userService.selectUserByUserName(username);
        Long userId = sysUser.getUserId();
        // 生成token
        String token = tokenService.createToken(loginUser);