فهرست منبع

fix user no login

459242451@qq.com 3 سال پیش
والد
کامیت
6b4f3ed14d

+ 42 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/gas/PortalController.java

@@ -0,0 +1,42 @@
+package com.ruoyi.web.controller.gas;
+
+import cn.hutool.core.util.StrUtil;
+import com.ruoyi.framework.web.service.SysLoginService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @Description: TODO
+ * @Author: huangcheng
+ * @Date: 2021/11/25
+ * @Version V1.0
+ */
+@Controller
+public class PortalController {
+
+    @Value("${system.redirectUrl}")
+    private String redirectUrl;
+
+    @Autowired
+    private SysLoginService sysLoginService;
+
+    @RequestMapping("/portal/login")
+    public String thirdLogin(@RequestParam String token, HttpServletResponse response) {
+        // 组装系统本身的token给前端
+        String newToken = sysLoginService.nologin(token);
+        if (StrUtil.isNotBlank(newToken)) {
+            Cookie cookie = new Cookie("Admin-Token", newToken);
+            cookie.setPath("/");
+            response.addCookie(cookie);
+            return "redirect:" + redirectUrl + "?token=" + newToken;
+        }
+        return "redirect:" + redirectUrl;
+
+    }
+}

+ 2 - 1
ruoyi-admin/src/main/resources/application-prod.yml

@@ -138,4 +138,5 @@ third:
   userLogin: http://36.156.155.131:8099/api/main/mobile/login # 总和平台登录接口
 
 system:
-  security: self # 走何种校验方式 self自身用户密码校验;third第三方登录校验
+  security: self # 走何种校验方式 self自身用户密码校验;third第三方登录校验
+  redirectUrl: http://198.17.188.50:8088/home

+ 2 - 1
ruoyi-admin/src/main/resources/application-test.yml

@@ -134,4 +134,5 @@ third:
   userLogin: http://36.156.155.131:8099/api/main/mobile/login # 总和平台登录接口
 
 system:
-  security: third # 走何种校验方式 self自身用户密码校验;third第三方登录校验
+  security: third # 走何种校验方式 self自身用户密码校验;third第三方登录校验
+  redirectUrl: http://cbwq.xt.wenhq.top:8083/home

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -94,7 +94,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/captchaImage").anonymous()
+                .antMatchers("/login", "/captchaImage", "/portal/login").anonymous()
                 .antMatchers(
                         HttpMethod.GET,
                         "/",

+ 46 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java

@@ -144,6 +144,52 @@ public class SysLoginService {
         return tokenService.createToken(loginUser);
     }
 
+    public String nologin(String thirdToken) {
+        // 用户验证
+        Authentication authentication;
+        String password = Constants.DEFAULT_PASSWORD;
+        try {
+            // 保存用户
+            // 查询第三方用户信息
+            String getResult = HttpUtil.createGet(dajiaoguan_token).header("Authorization", Constants.TOKEN_PREFIX + thirdToken).execute().body();
+            JSONObject getJson = JSONUtil.parseObj(getResult);
+            int infoCode = getJson.getInt("code");
+            if (infoCode == 1) {
+                // 校验用户是否存在
+//                String username = getJson.getStr("account");
+                String username = "qinxq@zjgmsa";
+                if (UserConstants.UNIQUE.equals(userService.checkUserNameUnique(username))) {
+                    SysUser sysUser = new SysUser();
+                    // 将此用户新增入系统
+                    JSONObject data = getJson.getJSONObject("data");
+                    sysUser.setUserId(data.getLong("userId"));
+                    sysUser.setUserName(username);
+                    sysUser.setDeptId(data.getStr("depId"));
+                    sysUser.setPhonenumber(data.getStr("phone"));
+                    sysUser.setDelFlag("0");
+                    sysUser.setStatus("0");
+                    sysUser.setNickName(data.getStr("name"));
+                    // 新加入的用户属于普通用户角色
+                    sysUser.setRoleIds(new Long[]{2L});
+                    sysUser.setPassword(SecurityUtils.encryptPassword(password));
+                    userService.insertUser(sysUser);
+                }
+                // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
+                authentication = authenticationManager
+                        .authenticate(new UsernamePasswordAuthenticationToken(username, password));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+            } else {
+                return "";
+            }
+        } catch (Exception e) {
+            return "";
+        }
+        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+        recordLoginInfo(loginUser.getUser());
+        // 生成token
+        return tokenService.createToken(loginUser);
+    }
+
     /**
      * 校验验证码
      *