安于心m 2025-08-22 17:10 采纳率: 65.2%
浏览 19

如何实现后台管理系统中网页微信授权登录

目前已经有一个小程序的前后端项目,在线上了,主要是做个人名片的;但是需要一个后台管理系统来进行一些数据的统计,包括个人名片的一些信息更新;目前管理系统使用了ruoyi的框架;为了实现数据的关联,有没有技术佬帮忙看看;有没有微信网页授权登录方面的,想请教一下;如何在我的后台管理系统中嵌入微信登录;有哪些步骤

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-08-22 17:11
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    要实现后台管理系统中微信网页授权登录,并将其与现有的小程序项目及 RuoYi 框架进行集成,以下是详细的步骤和关键技术点说明。我们将重点部分加粗,并用有序列表展示解决方案。


    ✅ 一、技术背景简述

    你已经有一个上线的小程序项目(使用了 RuoYi 框架),现在需要为后台管理系统添加微信网页授权登录功能,目的是:

    • 让管理员能够通过微信扫码或网页授权方式登录后台;
    • 实现用户身份识别,便于数据统计和更新;
    • 确保后台系统与小程序之间数据的关联性。

    ✅ 二、实现微信网页授权登录的关键步骤

    1. 注册微信开放平台账号并创建应用

    重点: 必须在 微信公众平台开放平台 注册并创建一个网站应用(即“网页授权”应用)。

    步骤:

    1. 登录 微信公众平台开放平台
    2. 进入【开发管理】 -> 【网页授权】。
    3. 添加你的后台管理系统域名(如 admin.example.com)。
    4. 获取 AppIDAppSecret,用于后续请求微信接口。

    ⚠️ 注意:域名必须备案,且不能是本地 IP 地址。


    2. 在后台管理系统中配置微信授权登录

    重点: 需要在 RuoYi 后台系统中集成微信登录逻辑。

    (1)添加依赖(如果使用 Spring Boot)

    pom.xml 中添加以下依赖(如果尚未引入):

    <dependency>
        <groupId>com.github.binarywang</groupId>
        <artifactId>weixin-java-mp</artifactId>
        <version>3.8.0</version>
    </dependency>
    
    (2)配置 application.ymlapplication.properties
    wechat:
      mp:
        app-id: your_appid
        app-secret: your_appsecret
        token: your_token
        aes-key: your_aeskey
    

    如果只是网页授权,tokenaes-key 可以暂时不填。


    3. 实现微信授权登录流程

    重点: 微信网页授权登录流程如下:

    1. 用户访问后台管理系统页面(如 /login);
    2. 页面跳转至微信授权页面(如 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect);
    3. 用户授权后,微信会重定向到你的 redirect_uri,并附带 code
    4. 你的系统根据 code 请求微信接口获取 access_tokenopenid
    5. 根据 openid 查询数据库中的用户信息,若不存在则注册;
    6. 生成自定义 Session 或 JWT Token,完成登录。

    4. 编写微信授权登录逻辑代码(Spring Boot 示例)

    重点: 下面是一个简单的授权登录示例代码(基于 RuoYi 框架)。

    // 微信授权回调处理类
    @RestController
    public class WeChatAuthController {
    
        @Value("${wechat.mp.app-id}")
        private String appId;
    
        @Value("${wechat.mp.app-secret}")
        private String appSecret;
    
        @GetMapping("/weChatLogin")
        public String weChatLogin(@RequestParam("code") String code) {
            // 1. 使用 code 获取 access_token 和 openid
            String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId +
                         "&secret=" + appSecret +
                         "&code=" + code +
                         "&grant_type=authorization_code";
    
            ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
            JSONObject json = JSON.parseObject(response.getBody());
    
            String accessToken = json.getString("access_token");
            String openId = json.getString("openid");
    
            // 2. 使用 openId 获取用户信息
            String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken +
                                "&openid=" + openId +
                                "&lang=zh_CN";
            ResponseEntity<String> userInfoResponse = restTemplate.getForEntity(userInfoUrl, String.class);
            JSONObject userInfoJson = JSON.parseObject(userInfoResponse.getBody());
    
            String nickname = userInfoJson.getString("nickname");
            String headimgurl = userInfoJson.getString("headimgurl");
    
            // 3. 根据 openId 查询用户是否存在
            User user = userService.getByOpenId(openId);
    
            if (user == null) {
                // 创建新用户
                user = new User();
                user.setOpenId(openId);
                user.setUsername(nickname);
                user.setAvatar(headimgurl);
                userService.save(user);
            }
    
            // 4. 登录成功,生成 Token 或 Session
            String token = JwtUtil.generateToken(user.getId());
            return "登录成功,Token: " + token;
        }
    }
    

    ⚠️ 请根据你的实际业务逻辑调整上述代码,例如用户表结构、JWT 生成方式等。


    5. 前端页面跳转至微信授权页面

    在前端页面中(如 /login.html),当用户点击“微信登录”按钮时,跳转至微信授权页面:

    <a href="https://open.weixin.qq.com/connect/oauth2/authorize?
    appid=YOUR_APPID&
    redirect_uri=https://yourdomain.com/weChatLogin&
    response_type=code&
    scope=snsapi_userinfo&
    state=STATE#wechat_redirect"
    target="_blank">微信登录</a>
    

    请将 YOUR_APPIDhttps://yourdomain.com/weChatLogin 替换为你自己的 AppID 和回调地址。


    ✅ 三、数据关联建议(小程序与后台系统)

    为了实现小程序与后台系统的数据关联,可以考虑以下方案:

    | 数据项 | 关联方式 | |----------------|------------------------------------| | 用户 ID | 使用微信 OpenID 作为唯一标识 | | 名片数据 | 将名片数据存储在后台数据库中,通过 OpenID 关联 | | 管理员权限 | 后台管理员可通过 OAuth2 授权登录 |

    ✅ 建议在数据库中增加 open_id 字段,用于关联小程序用户和后台系统用户。


    ✅ 四、总结

    1. 注册微信开放平台应用,获取 AppIDAppSecret
    2. 在 RuoYi 后台系统中集成微信授权登录逻辑
    3. 编写授权回调接口,通过 code 获取用户信息;
    4. 前端页面跳转至微信授权页面
    5. 实现数据关联,通过 open_id 关联小程序用户与后台系统用户。

    ✅ 五、注意事项

    • 微信授权回调地址必须是 HTTPS;
    • redirect_uri 必须与你在微信开放平台中填写的一致;
    • 若使用 RuoYi 框架,注意其已有的登录机制,可能需要做适配;
    • 安全方面建议使用 JWT 或 Session 来维护登录状态。

    如果你有具体的代码结构或框架版本(如 RuoYi 的版本),我可以进一步帮你定制化解决方案。欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 8月22日