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

超炫的网站做一个简单网站

超炫的网站,做一个简单网站,tomcat如何部署wordpress,百度百度一下背景 有的时候我们做框架升级或改造的时候#xff0c;需要用到原来的部分表#xff0c;比如只是用ruoyi的框架#xff0c;然后登录的用户逻辑还是想用自己的表#xff0c;那么接下来这边文章将介绍修改逻辑。 修改教程 1、SysLoginController.java 大家找到这个login方…背景 有的时候我们做框架升级或改造的时候需要用到原来的部分表比如只是用ruoyi的框架然后登录的用户逻辑还是想用自己的表那么接下来这边文章将介绍修改逻辑。 修改教程 1、SysLoginController.java 大家找到这个login方法这是controller的入口。 /*** 登录方法* * param loginBody 登录信息* return 结果*/PostMapping(/login)public AjaxResult login(RequestBody LoginBody loginBody){// 退出接口查看LogoutSuccessHandlerImpl.onLogoutSuccessAjaxResult ajax AjaxResult.success();// 生成令牌修改这个map返回自己的表的用户对象。// 如果这里不处理其余的逻辑就不需要修改因为我这里要手动写入自己的日志MapString, Object map loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),loginBody.getUuid());LoginUser loginUser (LoginUser)map.get(loginUser);loginUser.setLanguage(loginBody.getLanguage());bsOperateLogV2Service.createLoginLog(String.valueOf(loginUser.getUserId()),loginUser.getUsername(),1,String.valueOf(loginUser.getDeptId()));ajax.put(Constants.TOKEN, map.get(token));return ajax;} 2、SysLoginService.java 这里有一些验证比如验证码用户是否存在等大家点击进入到loginPreCheck方法中把查询用户修改为自己的表查询然后把没有用的逻辑注释掉。 /*** 登录验证* * param username 用户名* param password 密码* param code 验证码* param uuid 唯一标识* return 结果*/public MapString, Object login(String username, String password, String code, String uuid){// 验证码校验validateCaptcha(username, code, uuid);// 登录前置校验loginPreCheck(username, password);// 用户验证Authentication authentication null;try{UsernamePasswordAuthenticationToken authenticationToken new UsernamePasswordAuthenticationToken(username, password);AuthenticationContextHolder.setContext(authenticationToken);// 该方法会去调用UserDetailsServiceImpl.loadUserByUsernameauthentication 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());MapString, Object map new HashMap();map.put(token,tokenService.createToken(loginUser));map.put(loginUser,loginUser);// 生成tokenreturn map;}/*** 登录前置校验* param username 用户名* param password 用户密码*/public void loginPreCheck(String username, String password){// 用户名或密码为空 错误if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)){AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(not.null)));throw new UserNotExistsException();}// 密码如果不在指定范围内 错误 // if (password.length() UserConstants.PASSWORD_MIN_LENGTH // || password.length() UserConstants.PASSWORD_MAX_LENGTH) // { // AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(user.password.not.match))); // throw new UserPasswordNotMatchException(); // } // // 用户名不在指定范围内 错误 // if (username.length() UserConstants.USERNAME_MIN_LENGTH // || username.length() UserConstants.USERNAME_MAX_LENGTH) // { // AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(user.password.not.match))); // throw new UserPasswordNotMatchException(); // } // // IP黑名单校验 // String blackStr configService.selectConfigByKey(sys.login.blackIPList); // if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) // { // AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(login.blocked))); // throw new BlackListException(); // }} 3、loadUserByUsername方法 大家找到UserDetailsServiceImpl.loadUserByUsername方法这是核心。 Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException{Authentication usernamePasswordAuthenticationToken AuthenticationContextHolder.getContext(); // 这是自己的页面输入的密码没有加密比如123456String inputPassword usernamePasswordAuthenticationToken.getCredentials().toString();// 这里是自定义的表查询用户和密码验证如果还有其他的验证都可以在这里进行添加LambdaQueryWrapper wrapper new LambdaQueryWrapperBladeUserV2DO().eq(BladeUserV2DO::getAccount,username)//PasswordUtil是自己的加密工具你用什么加密就保持原来的就行.eq(BladeUserV2DO::getPassword, PasswordUtil.encrypt(inputPassword)).eq(BladeUserV2DO::getIsDeleted,0);// 这里写自己的登录验证逻辑BladeUserV2DO bladeUserV2DO bladeUserV2Mapper.selectOne(wrapper); // SysUser user userService.selectUserByUserName(username);if (StringUtils.isNull(bladeUserV2DO)){log.info(登录用户{} 不存在., username);throw new UserPasswordNotMatchException();}BCryptPasswordEncoder passwordEncoder new BCryptPasswordEncoder();// 这里一定要把加密后的密码放进去后面的验证中会一直用这个密码// 这个是123456加密后的密码这里给框架都是完全通过的密码// 因为我们在方法开始的时候自己进行密码验证能走到这里都是验证通过的bladeUserV2DO.setPassword(passwordEncoder.encode(inputPassword));passwordService.validate(bladeUserV2DO);return createLoginUser(bladeUserV2DO);}public UserDetails createLoginUser(BladeUserV2DO bladeUserV2DO){BladeUserRespVo bladeUserRespVo bladeUserV2Mapper.getBladeUserInfo(bladeUserV2DO.getId());SysUser user new SysUser();user.setUserId(bladeUserV2DO.getId());user.setDeptId(0L);if(StringUtils.isNotEmpty(bladeUserV2DO.getDeptId())){user.setDeptId(Long.parseLong(bladeUserV2DO.getDeptId()));}user.setEmail(bladeUserV2DO.getEmail());user.setDelFlag(0);user.setNickName(bladeUserV2DO.getRealName());user.setUserName(bladeUserV2DO.getAccount());user.setPhonenumber(bladeUserV2DO.getPhone());user.setCreateTime(bladeUserV2DO.getCreateTime());user.setRoleId(0L);// 必须复制加密后的密码后续框架一直在验证// 上面已经把123456对应的加密字符串保存进来这里直接复制进去// 后续的框架一直在验证user.setPassword(bladeUserV2DO.getPassword());if(StringUtils.isNotEmpty(bladeUserV2DO.getRoleId())){user.setRoleId(Long.parseLong(bladeUserV2DO.getRoleId()));}user.setSex(bladeUserV2DO.getSex());// LoginUser直接修改代码把自己需要添加的字段都写进去生成对应的set和get方法就行return new LoginUser(user.getUserId(), user.getDeptId(),user, permissionService.getMenuPermission(user),bladeUserRespVo.getIsSuperAdmin(),bladeUserRespVo.getIsAdmin(),bladeUserV2DO.getAccount());}public LoginUser(Long userId, Long deptId, SysUser user, SetString permissions,int isSuperAdmin,int isAdmin, String account){this.userId userId;this.deptId deptId;this.user user;this.permissions permissions;//增加自己的字段this.isSuperAdmin isSuperAdmin;this.isAdmin isAdmin;this.account account;} 4、SysPasswordService.java 这里的validate方法中把没有用的逻辑注释掉。 /*** 登录账户密码错误次数缓存键名* * param username 用户名* return 缓存键key*/private String getCacheKey(String username){return CacheConstants.PWD_ERR_CNT_KEY username;}public void validate(BladeUserV2DO bladeUserV2DO){Authentication usernamePasswordAuthenticationToken AuthenticationContextHolder.getContext();String username usernamePasswordAuthenticationToken.getName();String password usernamePasswordAuthenticationToken.getCredentials().toString(); // Integer retryCount redisCache.getCacheObject(getCacheKey(username)); // // if (retryCount null) // { // retryCount 0; // } // // if (retryCount Integer.valueOf(maxRetryCount).intValue()) // { // AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, // MessageUtils.message(user.password.retry.limit.exceed, maxRetryCount, lockTime))); // throw new UserPasswordRetryLimitExceedException(maxRetryCount, lockTime); // }if (!matches(bladeUserV2DO, 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);}} 5、PasswordUtil.java 如果你用的md5加密就不需要我的这个工具类 package com.ruoyi.common.utils;import jodd.util.StringUtil; import org.apache.commons.codec.Charsets; import org.springframework.lang.Nullable; import org.springframework.util.DigestUtils;import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class PasswordUtil extends DigestUtils {private static final char[] HEX_CODE new char[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f};public PasswordUtil() {}public static String md5Hex(final String data) {return DigestUtils.md5DigestAsHex(data.getBytes(Charsets.UTF_8));}public static String md5Hex(final byte[] bytes) {return DigestUtils.md5DigestAsHex(bytes);}public static String sha1Hex(String data) {return sha1Hex(data.getBytes(Charsets.UTF_8));}public static String sha1Hex(final byte[] bytes) {return digestHex(SHA-1, bytes);}public static String sha224Hex(String data) {return sha224Hex(data.getBytes(Charsets.UTF_8));}public static String sha224Hex(final byte[] bytes) {return digestHex(SHA-224, bytes);}public static String sha256Hex(String data) {return sha256Hex(data.getBytes(Charsets.UTF_8));}public static String sha256Hex(final byte[] bytes) {return digestHex(SHA-256, bytes);}public static String sha384Hex(String data) {return sha384Hex(data.getBytes(Charsets.UTF_8));}public static String sha384Hex(final byte[] bytes) {return digestHex(SHA-384, bytes);}public static String sha512Hex(String data) {return sha512Hex(data.getBytes(Charsets.UTF_8));}public static String sha512Hex(final byte[] bytes) {return digestHex(SHA-512, bytes);}public static String digestHex(String algorithm, byte[] bytes) {try {MessageDigest md MessageDigest.getInstance(algorithm);return encodeHex(md.digest(bytes));} catch (NoSuchAlgorithmException var3) {var3.printStackTrace();}return null;}public static String hmacMd5Hex(String data, String key) {return hmacMd5Hex(data.getBytes(Charsets.UTF_8), key);}public static String hmacMd5Hex(final byte[] bytes, String key) {return digestHMacHex(HmacMD5, bytes, key);}public static String hmacSha1Hex(String data, String key) {return hmacSha1Hex(data.getBytes(Charsets.UTF_8), key);}public static String hmacSha1Hex(final byte[] bytes, String key) {return digestHMacHex(HmacSHA1, bytes, key);}public static String hmacSha224Hex(String data, String key) {return hmacSha224Hex(data.getBytes(Charsets.UTF_8), key);}public static String hmacSha224Hex(final byte[] bytes, String key) {return digestHMacHex(HmacSHA224, bytes, key);}public static byte[] hmacSha256(String data, String key) {return hmacSha256(data.getBytes(Charsets.UTF_8), key);}public static byte[] hmacSha256(final byte[] bytes, String key) {return digestHMac(HmacSHA256, bytes, key);}public static String hmacSha256Hex(String data, String key) {return hmacSha256Hex(data.getBytes(Charsets.UTF_8), key);}public static String hmacSha256Hex(final byte[] bytes, String key) {return digestHMacHex(HmacSHA256, bytes, key);}public static String hmacSha384Hex(String data, String key) {return hmacSha384Hex(data.getBytes(Charsets.UTF_8), key);}public static String hmacSha384Hex(final byte[] bytes, String key) {return digestHMacHex(HmacSHA384, bytes, key);}public static String hmacSha512Hex(String data, String key) {return hmacSha512Hex(data.getBytes(Charsets.UTF_8), key);}public static String hmacSha512Hex(final byte[] bytes, String key) {return digestHMacHex(HmacSHA512, bytes, key);}public static String digestHMacHex(String algorithm, final byte[] bytes, String key) {SecretKeySpec secretKey new SecretKeySpec(key.getBytes(Charsets.UTF_8), algorithm);try {Mac mac Mac.getInstance(secretKey.getAlgorithm());mac.init(secretKey);return encodeHex(mac.doFinal(bytes));} catch (InvalidKeyException | NoSuchAlgorithmException var5) {var5.printStackTrace();}return null;}public static byte[] digestHMac(String algorithm, final byte[] bytes, String key) {SecretKeySpec secretKey new SecretKeySpec(key.getBytes(Charsets.UTF_8), algorithm);try {Mac mac Mac.getInstance(secretKey.getAlgorithm());mac.init(secretKey);return mac.doFinal(bytes);} catch (InvalidKeyException | NoSuchAlgorithmException var5) {var5.printStackTrace();}return null;}public static String encodeHex(byte[] bytes) {StringBuilder r new StringBuilder(bytes.length * 2);byte[] var2 bytes;int var3 bytes.length;for(int var4 0; var4 var3; var4) {byte b var2[var4];r.append(HEX_CODE[b 4 15]);r.append(HEX_CODE[b 15]);}return r.toString();}public static boolean slowEquals(Nullable String a, Nullable String b) {return a ! null b ! null ? slowEquals(a.getBytes(Charsets.UTF_8), b.getBytes(Charsets.UTF_8)) : false;}public static boolean slowEquals(Nullable byte[] a, Nullable byte[] b) {if (a ! null b ! null) {if (a.length ! b.length) {return false;} else {int diff a.length ^ b.length;for(int i 0; i a.length; i) {diff | a[i] ^ b[i];}return diff 0;}} else {return false;}}public static String hex(String data) {return StringUtil.isBlank(data) ? : sha1Hex(data);}public static String encrypt(String data) {return StringUtil.isBlank(data) ? : sha1Hex(md5Hex(data));} }6、完结
http://www.hkea.cn/news/14327604/

相关文章:

  • wordpress建站系统备案信息 网站名
  • 常州网站建设公司案例证书查询网
  • 什么是h5网站那些做环保网站的好处
  • 临海高端网站设计新感觉建站重庆百度网站推广
  • 银川网站开发公司音乐视频制作软件app
  • 个人网站设计主题搜索引擎主要包括三个部分
  • 上传设计作品的网站北京网站建设专家
  • 网站导航页面制作网页制作基础教程田田田田田田田田
  • 如何搭建门户网站建工教育网
  • 小型网站搭建建设银行网站怎么登录
  • 怎么做网站广告位学新媒体运营最好的培训学校
  • 制作网站注册登录模块的思维导图网站开发服务器怎么选
  • 网站分站开发计划书厦门正规网站建设企业
  • 网站 封锁右键沈阳网站建设技术支持
  • 优质的做网站农资网站建设
  • 如何优化wordpress网站有没有找外加工的活的平台
  • 济南做网站找哪家好网站群建设技术方案
  • 做二手货的网站有哪些网站建设kaicz
  • wordpress建站过程h5制作软件 知乎 推荐
  • 备案老域名首页关键词优化公司
  • 网站弄好了怎么推广外贸网站建设入门
  • 怎么做钓鱼网站吗wordpress json ld
  • 网站建设公司推荐q479185700顶上wordpress 文章幻灯片
  • 现在网站开发用什么合肥网页设计兼职
  • 海会主机做的网站都能干什么的南海网站建设多少钱
  • 做视频网站服务器配置免费申请网站 免备案
  • 台州网站建站公司荣耀官方网站手机商城
  • 大连成品网站建设wordpress 评论框 模板
  • 网站页脚怎么做仕德伟做的网站图片怎么修
  • 交互效果网站佛山app开发公司