> 文档中心 > 若依系统取消验证码,超时登陆

若依系统取消验证码,超时登陆

版本:若依前后端分离系统

取消登陆验证码

后台注释调SysLoginService中检测验证码的判断

/**     * 登录验证     *     * @param username 用户名     * @param password 密码     * @param code     验证码     * @param uuid     唯一标识     * @return 结果     */    public String login(String username, String password, String code, String uuid) { String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; String captcha = redisCache.getCacheObject(verifyKey); redisCache.deleteObject(verifyKey); //注释掉 取消验证码验证// if (captcha == null) {//     AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));//     throw new CaptchaExpireException();// }// if (!code.equalsIgnoreCase(captcha)) {//     AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));//     throw new CaptchaException();// } // 用户验证 Authentication authentication = null; try {     // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername     authentication = authenticationManager      .authenticate(new UsernamePasswordAuthenticationToken(username, password)); } 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 CustomException(e.getMessage());     } } AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUser()); // 生成token return tokenService.createToken(loginUser);    }

前端login.vue中注释掉验证码框


延长/取消登陆超时

取消添加expireTime令牌有效时间和超时时长两个参数

这样redis就不会刷新令牌 登陆长期有效

    /**     * 刷新令牌有效期     *     * @param loginUser 登录信息     */    public void refreshToken(LoginUser loginUser) { loginUser.setLoginTime(System.currentTimeMillis()); loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); // 根据uuid将loginUser缓存 String userKey = getTokenKey(loginUser.getToken());// redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); redisCache.setCacheObject(userKey, loginUser);    }

也可改变令牌时间延长登陆的超时时间

 看需求,建议使用此方法,永久登陆不超时不太安全

WIFI共享精灵