Browse Source

Azure登录 id_token用户名解析

wangggziwen 2 years ago
parent
commit
832f8cb733

+ 5 - 7
master/src/main/java/com/ruoyi/project/system/controller/SysLoginController.java

@@ -215,17 +215,15 @@ public class SysLoginController {
             JSONObject jsonObject = JSONObject.parseObject(decodeStr);
 
             // 4. 系统登录 获取系统token
-            // 获取cn字段,对应cpms.sysuser.username
-            // cn生产
-            String cn = jsonObject.get("cn").toString();
-            // cn测试
-//            String cn = "ZHANGL49";
+            // 获取preferred_username字段,对应cpms.sysuser.username
+            String preferredUsername = jsonObject.get("preferred_username").toString();
+            String userName = preferredUsername.substring(0, preferredUsername.indexOf("@"));
             // 根据username,获取系统用户对象
-            SysUser sysUser = userService.selectUserByUserName(cn);
+            SysUser sysUser = userService.selectUserByUserName(userName);
             if (sysUser == null) {
                 return AjaxResult.error("用户不存在");
             }
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(cn, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+            AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
             LoginUser loginUser = new LoginUser(sysUser, permissionService.getMenuPermission(sysUser));
             String token =  tokenService.createToken(loginUser);
             ajax.put(Constants.TOKEN, token);

+ 1 - 1
master/src/main/resources/mybatis/system/SysUserMapper.xml

@@ -195,7 +195,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
 	    <include refid="selectUserVo"/>
-		where u.user_name = #{userName}
+		where upper(u.user_name)= upper(#{userName})
 	</select>
 
 	<select id="selectUserByDept" parameterType="Long" resultMap="SysUserResult">