From 1c4bf2cd5332d3d50964ad8940b1cb747b59dfb8 Mon Sep 17 00:00:00 2001 From: lmc Date: Wed, 20 Nov 2024 10:55:07 +0800 Subject: [PATCH] =?UTF-8?q?ibm=20=E7=B3=BB=E7=BB=9F=20=E5=8D=95=E7=82=B9?= =?UTF-8?q?=E7=99=BB=E5=BD=95=20=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= =?UTF-8?q?=E5=8F=8A=20=E8=B7=B3=E8=BD=AC=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RuoYi-Vue-Oracle/pom.xml | 11 +++++ .../com/ruoyi/common/OAuth/OauthDemo.java | 24 ++++++++--- .../java/com/ruoyi/common/task/EquTask.java | 2 +- .../framework/config/SecurityConfig.java | 2 +- .../security/service/SysLoginService.java | 42 +++++++++++++++++++ .../system/controller/BbcController.java | 30 +++++++++++-- .../mybatis/system/SysUserMapper.xml | 12 +++--- 7 files changed, 107 insertions(+), 16 deletions(-) diff --git a/RuoYi-Vue-Oracle/pom.xml b/RuoYi-Vue-Oracle/pom.xml index 401737e..49b8119 100644 --- a/RuoYi-Vue-Oracle/pom.xml +++ b/RuoYi-Vue-Oracle/pom.xml @@ -212,9 +212,20 @@ + + com.banboocloud.Codec + banboocloud_Codec + 0.0.1 + + + org.jodd + jodd-http + 6.3.0 + + cn.hutool hutool-all diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/common/OAuth/OauthDemo.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/common/OAuth/OauthDemo.java index 1eb540c..407ad9a 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/common/OAuth/OauthDemo.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/common/OAuth/OauthDemo.java @@ -2,6 +2,10 @@ package com.ruoyi.common.OAuth; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.framework.security.service.SysLoginService; +import com.ruoyi.framework.web.domain.AjaxResult; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -15,6 +19,7 @@ import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; +import java.util.ArrayList; /** * Author:Zhenggang @@ -29,23 +34,24 @@ public class OauthDemo { //认证地址 public static final String BASE_URL = "http://utuum.sd-gold.com:7021/idp/oauth2"; //应用注册id - public static final String CLIENT_ID = "ERM"; + public static final String CLIENT_ID = "hfxyjwzxjc"; //应用注册key - public static final String CLIENT_SECRET = "ermsecret"; + public static final String CLIENT_SECRET = "2c9ecb1b6b1f47d297abb6ffa7ede060"; //获取access_token的url public static final String GET_ACCESS_TOKEN_URL = BASE_URL + "/getToken"; //获取用户信息的url public static final String GET_USERINFO_URL = BASE_URL + "/getUserInfo?client_id=" + CLIENT_ID + "&access_token="; - + @Autowired + private SysLoginService loginService; /** * 访问ip:port/root/redirectToAuth时,拼接并且重定向到 * http://utuum.sd-gold.com:7021/idp/oauth2/authorize?redirect_uri=ip:port/root/getAccountName&state=sso&client_id=ECD&response_type=code */ @RequestMapping("/redirectToAuth") public void reToAuth(HttpServletRequest request, HttpServletResponse response) { - String url = request.getRequestURL().toString().replaceAll("/redirectToAuth", "/getAccountName"); + String url = request.getRequestURL().toString().replaceAll("/prod-api/redirectToAuth", "/prod-api/getAccountName"); String re_url = BASE_URL + "/authorize?redirect_uri=" + url + "&state=sso&client_id=" + CLIENT_ID + "&response_type=code"; try { response.sendRedirect(re_url); @@ -61,7 +67,7 @@ public class OauthDemo { */ @ResponseBody @RequestMapping(value = "/getAccountName", method = RequestMethod.GET) - public String getAccountName(@RequestParam(name = "code") String code) { + public AjaxResult getAccountName(@RequestParam(name = "code") String code) { String accessTokenParam = null; System.out.println("1).authorize code is:" + code); try { @@ -88,12 +94,18 @@ public class OauthDemo { } System.out.println("3).userInfo is :" + userInfo); String acc = getValueFromJson(userInfo, "spRoleList"); + String userName = getValueFromJson(userInfo, "userName"); + String passWord = getValueFromJson(userInfo, "passWord"); if (acc == null || acc.equals("")) { System.out.println("cannot get acc"); return null; } System.out.println("the acc is :" + acc); - return "the acc is : " + acc; + String s = loginService.loginNoCaptcha(userName, passWord, null); + AjaxResult success = AjaxResult.success(); + success.put(Constants.TOKEN,s); + success.put("mgs","登录成功"); + return success; } diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/common/task/EquTask.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/common/task/EquTask.java index b99f659..055cce0 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/common/task/EquTask.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/common/task/EquTask.java @@ -36,7 +36,7 @@ public class EquTask { /** * 港口原有设备对接 */ - @Scheduled(fixedRate = 10000) +// @Scheduled(fixedRate = 10000) public void equ(){ String hash = "16EA8A305FB58BE0730DD67F04F022F4"; diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 3509291..bda1c17 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -112,7 +112,7 @@ public class SecurityConfig permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对于登录login 注册register 验证码captchaImage 允许匿名访问 requests.antMatchers("/login","/bbc/**", - "/register", "/captchaImage","/outside/*").permitAll() + "/register", "/captchaImage","/outside/*","/redirectToAuth","/getAccountName").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java index 0b325f7..0410ac2 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java @@ -100,6 +100,48 @@ public class SysLoginService return tokenService.createToken(loginUser); } + + /** + * 无需验证码登录 + * 重写login方法将验证码模块去掉 + * @param username + * @param password + * @param uuid + * @return + */ + public String loginNoCaptcha(String username, String password, String uuid) + { + // 用户验证 + 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()); + } + } + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + recordLoginInfo(loginUser.getUserId()); + // 生成token + return tokenService.createToken(loginUser); + } + + + /** * 校验验证码 * diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/system/controller/BbcController.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/system/controller/BbcController.java index f9df66a..d034cdc 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/system/controller/BbcController.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/system/controller/BbcController.java @@ -70,7 +70,7 @@ public class BbcController extends BaseController { } // @ApiOperation("对象属性字段查询") - @PostMapping("/schemaService") + @PostMapping("/SchemaService") public String SchemaService(HttpServletRequest req, HttpServletResponse resp) { JSONObject jsonObject = new JSONObject(); @@ -113,10 +113,16 @@ public class BbcController extends BaseController { statusMap.put("name","status"); statusMap.put("required",true); statusMap.put("type","String"); + HashMap nickNameMap = new HashMap<>(); + nickNameMap.put("multivalued",false); + nickNameMap.put("name","nickName"); + nickNameMap.put("required",true); + nickNameMap.put("type","String"); accountList.add(nameMap); accountList.add(passMap); accountList.add(mobileMap); accountList.add(statusMap); + accountList.add(nickNameMap); jsonObject.put("account", accountList); // jsonObject.put("organization", mapJson.organizationList()); // jsonObject.put("role", mapJson.roleList()); @@ -153,6 +159,7 @@ public class BbcController extends BaseController { JSONObject jsonObject = new JSONObject(); StringBuilder sb = stringBuilder(req); + logger.info("json--bodyStr-->"+sb); //修改多值的属性格式方便转换 String bodyparam = sb.toString(); bodyparam = BamboocloudUtils.getPlaintext(bodyparam, "123456", "AES"); @@ -178,11 +185,22 @@ public class BbcController extends BaseController { // User user = createUpdateUser(reqmap); String userName = (String) reqmap.get("userName"); String pass = (String) reqmap.get("password"); + String mobile = (String) reqmap.get("mobile"); + String status = (String) reqmap.get("status"); + String nickName = (String) reqmap.get("nickName"); logger.info("reqmap---------->"+reqmap); SysUser user = new SysUser(); user.setUserName(userName); user.setPassword(pass); + user.setPhonenumber(mobile); + user.setStatus(status); + user.setNickName(nickName); + Random random = new Random(); + int min = 8000; + int max = 9000; + int randomNumber = random.nextInt(max - min + 1) + min; + user.setUserId(Long.valueOf(randomNumber)); //用户创建 userService.registerUser(user); //获取返回给IAM连接器的唯一标识,用于后续该条数据的更新修改删除 @@ -224,7 +242,7 @@ public class BbcController extends BaseController { StringBuilder sb = stringBuilder(req); String bodyparam = sb.toString(); - + logger.info("json--bodyStr-->"+sb); bodyparam = BamboocloudUtils.getPlaintext(bodyparam, "123456", "AES"); //修改多值的属性格式方便转换 String p = bodyparam; @@ -242,15 +260,21 @@ public class BbcController extends BaseController { String username = (String) reqmap.get("bimRemoteUser"); String password = (String) reqmap.get("bimRemotePwd"); if (BamboocloudUtils.checkUsernamePassword(username, password)) { - SysUser user = new SysUser(); //获取用于更新的参数 // user = createUpdateUser(reqmap); String userName = (String) reqmap.get("userName"); String pass = (String) reqmap.get("password"); + String mobile = (String) reqmap.get("mobile"); + String status = (String) reqmap.get("status"); + String nickName = (String) reqmap.get("nickName"); logger.info("reqmap---------->"+reqmap); + SysUser user = new SysUser(); user.setUserName(userName); user.setPassword(pass); + user.setPhonenumber(mobile); + user.setStatus(status); + user.setNickName(nickName); //获取用于更新的唯一标识 user.setUserId(Long.valueOf(String.valueOf(reqmap.get("bimUid")))); //更新用户 diff --git a/RuoYi-Vue-Oracle/src/main/resources/mybatis/system/SysUserMapper.xml b/RuoYi-Vue-Oracle/src/main/resources/mybatis/system/SysUserMapper.xml index cadaf15..43ab036 100644 --- a/RuoYi-Vue-Oracle/src/main/resources/mybatis/system/SysUserMapper.xml +++ b/RuoYi-Vue-Oracle/src/main/resources/mybatis/system/SysUserMapper.xml @@ -144,11 +144,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - select seq_sys_user.nextval as userId from DUAL - + + + + + + + insert into sys_user( user_id, dept_id,