当前位置: 首页 > news >正文

网站开发税收分类济南微网站建设

网站开发税收分类,济南微网站建设,项目外包平台,贵阳查房子备案的网站背景:我用的是ruoyi-vue3.8.6版本,因公司需要使用window的域用户进行登录验证,因此原有的ruoyi登录验证方法就得替换掉 1. 首先登录系统添加一些域账号,以确保登录方式更改后,能在sys_user中找到该账号,因…

背景:我用的是ruoyi-vue3.8.6版本,因公司需要使用window的域+用户进行登录验证,因此原有的ruoyi登录验证方法就得替换掉

1. 首先登录系统添加一些域账号,以确保登录方式更改后,能在sys_user中找到该账号,因还需要使用ruoyi系统的权限部门等表,因此是不能直接删除掉原本的表结构
2. 更改登录验证:
 2.1更改逻辑:
##更改之前的逻辑
SysLoginController.java中的login方法会调用SysLoginService的login方法生成token,
login方法中authenticationManager.authenticate(authenticationToken);会调用UserDetailsServiceImpl的loadUserByUsername进行自定义校验##思路
loadUserByUsername的validate方法会校验密码是否输入正确,但不仅仅于此,UserDetailsService的实现类有很多,因此就算直接修改了validate这个校验方法,依旧会被其他的实现类给校验失败,
最终决定剔除掉LoginUser loginUser = authentication.getPrincipal();的authentication相关调用方法,##实现后需要删除的代码并且执行下面的这些方法后,UserDetailsServiceImpl.java就可以删掉了,
configure(AuthenticationManagerBuilder auth)与bCryptPasswordEncoder方法也删除用不到加密了,SysLoginService.java中的关于UserDetailsService的引用也需要删除,
同时SecurityConfig.java中的关于UserDetailsService的引用也需要删除,
2.2 真正实现(根据账号密码自己写校验,然后生成LoginUser,以下就是具体实现:):
1. 原SysLoginController.login方法保持不动,里面的login调用更改为以下:public String login(String username, String password){  //这个方法几乎是彻底重写LoginUser loginUser = loadUserByUsername(username, password);AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));recordLoginInfo(loginUser.getUserId());return tokenService.createToken(loginUser);// 生成token}public LoginUser loadUserByUsername(String username, String password) throws UsernameNotFoundException {SysUser user = userService.selectUserByUserName(username);//数据库中获取这个账号信息if (StringUtils.isNull(user)){log.info("登录用户:{} 不存在.", username); //如果apo账号在系统中没有定义,那么就无法登录throw new ServiceException(MessageUtils.message("user.not.exists"));}else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())){log.info("登录用户:{} 已被删除.", username);throw new ServiceException(MessageUtils.message("user.password.delete"));}else if (UserStatus.DISABLE.getCode().equals(user.getStatus())){log.info("登录用户:{} 已被停用.", username);throw new ServiceException(MessageUtils.message("user.blocked"));}passwordService.validate(username, password); //把校验成功后的密码赋值给user中,再返回,避免Spring Security再次使用PasswordEncoder加密进行判断return createLoginUser(user);}public LoginUser createLoginUser(SysUser user) {return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));}2. 上面调用的passwordService.validate(username, password); 方法也需要重写校验部分,如下:public void validate(String username, String password){Integer retryCount = redisCache.getCacheObject(getCacheKey(username));retryCount = retryCount == null?0 : retryCount;if (retryCount >= maxRetryCount){AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL,MessageUtils.message("user.password.retry.limit.exceed", maxRetryCount, lockTime)));throw new UserPasswordRetryLimitExceedException(maxRetryCount, lockTime);}if (!loginAPO(username, password)) {retryCount = retryCount + 1;AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL,MessageUtils.message("user.password.retry.limit.count", retryCount)));redisCache.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);throw new UserPasswordNotMatchException();}else{clearLoginRecordCache(username);}}3.上面的loginAPO校验方法:这个就是我们公司域账号登录校验方法public boolean loginAPO(String username, String passwd){Hashtable<String, String> HashEnv = new Hashtable<>();HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple");HashEnv.put(Context.SECURITY_PRINCIPAL, "你们公司的域\\" + username);//必须有域,否则验证失败HashEnv.put(Context.SECURITY_CREDENTIALS, passwd);HashEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");HashEnv.put(Context.PROVIDER_URL,  "LDAP://xxx.xxx.xxx.xxx"); //域校验接口try {new InitialLdapContext(HashEnv, null);return true;} catch (Exception e) {return false; //这里也可以输出校验的错误信息}}

http://www.yayakq.cn/news/618528/

相关文章:

  • qq网站建设剑灵代做装备网站
  • 网站快速过备案如何在手机上制作网站
  • 宜昌建设网站公司湖南常德红网百姓呼声
  • 品牌网站方案wordpress规范
  • 学做快餐在哪个网站保护稀有动物网站建设策划书
  • 洛阳网站推广优化百度不收录我的网站
  • 做导航网站用什么cmsowl WordPress主题
  • 河南建筑培训网莫停之科技windows优化大师
  • 爱用建站平台的优势计算机网络技术网站建设方向
  • 网站建设报价表下载贵州遵义企业公司网站建设
  • 威县做网站哪家好天堂网
  • 较好的网站设计师培训学校网上医疗和医院网站建设制作
  • 模板网站有哪几类网站网页优化技巧
  • 深圳网站建设那家好手机网站设计建设
  • 国外公共空间设计网站网站备案资质
  • 能被百度收录的建站网站思而忧网站
  • 苏州网站搜索引擎优化wordpress 自定义登陆
  • 手机自助网站建设营销组合策略
  • 外贸网站首页国外社交网站做的比较好的是
  • 有没类似建设通的免费网站做网站建设的销售怎么样
  • 杭州网站建设长春公司广州房地产网站建设
  • 工会网站升级改造建设方案焦作网站建设哪家公司好
  • 免费做网站网站的软件有哪些做企业点评的网站
  • 郑州电商网站建设教育培训机构网站模板
  • 法律建设网站数据库网站 建设费用
  • 自己ip做网站做网站费用滁州
  • 网站快速收录教程如何做网站快捷键的元素
  • 设计医院网站建设edge网页视频怎么下载
  • 给企业做网站 内容需要对方提供40个创意包装盒设计
  • 毕业设计网站前端代做成都住建局官网登陆