# 企业微信免登功能使用说明 ## 功能概述 企业微信免登功能允许用户通过企业微信客户端直接登录系统,无需输入用户名和密码,提升用户体验。 ## 实现原理 1. 用户在企业微信客户端中访问系统URL 2. 系统检测到企业微信环境,自动跳转到企业微信授权页面 3. 用户确认授权后,企业微信返回授权code 4. 系统通过code获取用户信息并完成登录 ## 文件结构 ``` 前端: - app/pages/qylogin.vue # 移动端免登页面 - ruoyi-ui/src/views/system/qywechat/autologin.vue # PC端免登测试页面 - ruoyi-ui/src/router/modules/qywechat.js # 路由配置 后端: - ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/QyWechatLoginController.java # 免登控制器 - ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java # 用户Mapper接口 - ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml # 用户Mapper XML - ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java # 用户服务接口 - ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java # 用户服务实现 ``` ## 配置要求 ### 1. 企业微信配置 在系统配置中添加以下配置项: ```sql -- 企业微信启用开关 INSERT INTO sys_config VALUES (NULL, '企业微信启用开关', 'qy_wechat.enable', 'true', 'Y', '系统内置', '是否启用企业微信功能', '1', '1', '2025-12-14 10:00:00', 'admin', '2025-12-14 10:00:00', 'admin', NULL); -- 企业微信CorpID INSERT INTO sys_config VALUES (NULL, '企业微信CorpID', 'qy_wechat.corp_id', 'your_corp_id', 'Y', '系统内置', '企业微信企业ID', '1', '1', '2025-12-14 10:00:00', 'admin', '2025-12-14 10:00:00', 'admin', NULL); -- 企业微信应用Secret(用于获取用户信息) INSERT INTO sys_config VALUES (NULL, '企业微信应用Secret', 'qy_wechat.corp_secret', 'your_corp_secret', 'Y', '系统内置', '企业微信应用密钥', '1', '1', '2025-12-14 10:00:00', 'admin', '2025-12-14 10:00:00', 'admin', NULL); -- 企业微信小程序Secret(用于获取AccessToken) INSERT INTO sys_config VALUES (NULL, '企业微信小程序Secret', 'qy_wechat.miniprogram_secret', 'your_miniprogram_secret', 'Y', '系统内置', '企业微信关联小程序密钥', '1', '1', '2025-12-14 10:00:00', 'admin', '2025-12-14 10:00:00', 'admin', NULL); -- 企业微信AgentId INSERT INTO sys_config VALUES (NULL, '企业微信AgentId', 'qy_wechat.agent_id', 'your_agent_id', 'Y', '系统内置', '企业微信应用ID', '1', '1', '2025-12-14 10:00:00', 'admin', '2025-12-14 10:00:00', 'admin', NULL); ``` ### 2. 用户绑定 需要将系统用户与企业微信用户进行绑定,在`sys_user`表中设置`qy_wechat_user_id`字段。 ## 使用流程 ### 移动端使用 1. 用户在企业微信中打开系统URL 2. 系统自动跳转到免登页面 `/pages/qylogin` 3. 页面检测企业微信环境并获取授权code 4. 调用后端免登接口完成登录 ### PC端测试 1. 登录系统后台 2. 进入【企业微信】->【免登测试】菜单 3. 输入企业微信授权code进行测试 ## 接口说明 ### 免登接口 ``` POST /system/qywechat/autoLogin 请求参数: { "code": "企业微信授权code" } 响应结果: { "code": 200, "msg": "登录成功", "data": { "token": "登录令牌", "user": { // 用户信息 } } } ``` ## 注意事项 1. 企业微信免登功能仅支持在企业微信客户端中使用 2. 需要正确配置企业微信应用的可信域名 3. 用户必须先绑定企业微信账号才能使用免登功能 4. 确保服务器能够访问企业微信API接口 ## 常见问题 ### 1. 授权失败 **问题现象**:提示"获取用户信息失败" **解决方案**: - 检查企业微信配置是否正确 - 确认应用的可信域名配置 - 检查网络是否能访问企业微信API ### 2. 用户未绑定 **问题现象**:提示"该企业微信账号未绑定系统用户" **解决方案**: - 在用户管理中找到对应用户 - 设置`qy_wechat_user_id`字段为企业微信用户ID ### 3. 登录异常 **问题现象**:提示"登录异常" **解决方案**: - 查看系统日志定位具体错误 - 检查用户状态是否正常 - 确认系统配置是否完整 ## 扩展功能 ### 1. 自动跳转配置 可以在前端页面中配置自动跳转逻辑: ```javascript // 检查企业微信环境 isWxWorkEnvironment() { const userAgent = navigator.userAgent.toLowerCase() return userAgent.includes('wxwork') } ``` ### 2. 用户绑定接口 可以开发用户绑定企业微信的接口: ```java @PostMapping("/bind") public AjaxResult bindQyWechatUser(@RequestBody BindRequest request) { // 实现用户绑定逻辑 } ```