返回顶部
首页 > 资讯 > 后端开发 > Python >springboot+jwt+微信小程序授权登录获取token的方法实例
  • 892
分享到

springboot+jwt+微信小程序授权登录获取token的方法实例

2024-04-02 19:04:59 892人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言配置XcxAuthenticationProviderXcxAuthenticationToken小程序授权登录前言 我们有时候在开发中,遇到这样的问题,就是我们需要小程序授

前言

我们有时候在开发中,遇到这样的问题,就是我们需要小程序授权登录我们自己的后台,通过小程序的信息换取我们自己后台的token,实现账号密码、小程序授权登录的多种登录方式。

配置

在 SecurityConfig文件中配置

XcxAuthenticationProvider

public class XcxAuthenticationProvider implements AuthenticationProvider {
    private UserDetailsService userDetailsService;

    @Override
    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        XcxAuthenticationToken authenticationToken = (XcxAuthenticationToken) authentication;

        String openId = (String) authenticationToken.getPrincipal();


        XcxUserService service= springContextUtil.getContext().getBean(XcxUserService.class);

        UserDetails userDetails = service.loadUserByOpenId(openId);

        // 此时鉴权成功后,应当重新 new 一个拥有鉴权的 authenticationResult 返回
        XcxAuthenticationToken authenticationResult = new XcxAuthenticationToken(userDetails, userDetails.getAuthorities());

        authenticationResult.setDetails(authenticationToken.getDetails());

        return authenticationResult;
    }


    @Override
    public boolean supports(Class<?> authentication) {
        // 判断 authentication 是不是 SmsCodeAuthenticationToken 的子类或子接口
        return XcxAuthenticationToken.class.isAssignableFrom(authentication);
    }

    public UserDetailsService getUserDetailsService() {
        return userDetailsService;
    }

    public void setUserDetailsService(UserDetailsService userDetailsService) {
        this.userDetailsService = userDetailsService;
    }
}

XcxAuthenticationToken

public class XcxAuthenticationToken extends AbstractAuthenticationToken { private static final long serialVersionUID = 420L;
    private final Object principal;

    
    public XcxAuthenticationToken(String openid) {
        super((Collection)null);
        this.principal = openid;
        this.setAuthenticated(false);
    }

    
    public XcxAuthenticationToken(Object principal, Collection<? extends GrantedAuthority> authorities) {
        super(authorities);
        this.principal = principal;
        super.setAuthenticated(true);
    }
    public Object getCredentials() {
        return null;
    }
    public Object getPrincipal() {
        return this.principal;
    }
    public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
        if (isAuthenticated) {
            throw new IllegalArgumentException("Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead");
        } else {
            super.setAuthenticated(false);
        }
    }
    public void eraseCredentials() {
        super.eraseCredentials();
    }
}

小程序授权登录

@RestController
@RequestMapping("/xcx")
@AllArgsConstructor
@api(value = "认证模块", tags = "认证模块")
public class XcxAuthController {

    private JwtService jwtService;
    private JwtUserDetail jwtUserDetail;
    private XcxUserService userService;
    private AuthenticationManager authenticationManager;

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @ApiOperation(value = "登录", notes = "登录")
    public Result login(@RequestBody Map<String, Object> map) {
        HashMap<String, Object> hashMap = new HashMap<>();
        String code = String.valueOf(map.get("code"));
        try {
            WxMaService wxMaService = WxMaconfiguration.getWxMaService();
            WxMajscode2SessionResult session = wxMaService.getUserService().getSessionInfo(code);

            XcxUser user = userService.getOne(Wrappers.<XcxUser>lambdaQuery()
                        .eq(XcxUser::getOpenId, session.getOpenid()), false);
                if (ObjectUtil.isNull(user)) {
                    //过滤掉表情
                    user = XcxUser.builder()
                            .openId(session.getOpenid())
//                        .nickname(wxMpUser.getNickName())
//                        .avatar(wxMpUser.getAvatarUrl())
                            .build();
                userService.save(user);
            } else {
                userService.updateById(user);
            }
            UserDetails userDetails = jwtUserDetail.loadUserByOpenId(session.getOpenid());
            authenticationManager.authenticate(new XcxAuthenticationToken(session.getOpenid()));
            Map<String, Object> parse = JSON.parseObject(JSON.toJSONString(userDetails), Map.class);
            String token = jwtService.createToken(parse);
            hashMap.put("token", token);
            hashMap.put("user", userDetails);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Result.success(hashMap);
    }


}

这里就基本完成了小程序的授权登录获取token的功能了,希望可以帮助到大家

到此这篇关于SpringBoot+jwt+微信小程序授权登录获取token的方法实例的文章就介绍到这了,更多相关springboot 小程序授权登录获取token内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: springboot+jwt+微信小程序授权登录获取token的方法实例

本文链接: https://lsjlt.com/news/141898.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot+jwt+微信小程序授权登录获取token的方法实例
    目录前言配置XcxAuthenticationProviderXcxAuthenticationToken小程序授权登录前言 我们有时候在开发中,遇到这样的问题,就是我们需要小程序授...
    99+
    2024-04-02
  • 【微信授权登录】uniapp开发小程序,实现获取微信授权登录功能
    一、解题思路: 微信授权登录(获取用户信息) 1.先获取用户信息——用户授权允许后,通过调用uni.login 可以获取到code。 2.拿着获取到的code去调用——登录接口,可以获取到token。 3.把token存入缓存。就可以在页面...
    99+
    2023-08-16
    小程序 微信 javascript
  • 微信小程序实现授权登录之获取用户信息
    本文实例为大家分享了微信小程序实现获取用户信息的具体代码,供大家参考,具体内容如下 小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内...
    99+
    2024-04-02
  • 微信小程序授权登录
    微信小程序—授权登录 一、小程序登录 登录流程时序 说明: 1.小程序端调用 wx.login() 获取临时登录凭证code ,并回传到开发者服务器。 2.服务器调用 code2Session 接口,换取 用户唯一标识 OpenID 和 ...
    99+
    2023-09-01
    微信小程序 小程序 微信 授权登录
  • 微信小程序登录方法之授权登陆及获取微信用户手机号
    目录先看一下小程序的登陆流程第一步, 调用微信登陆方法 wx.login() 获取临时登录凭证code ,并回传到开发者服务器。​​​​​第二步,获取用户信息,点击事件,获...
    99+
    2024-04-02
  • 【Springboot】整合wxjava实现 微信小程序:授权登录
    文章目录 一、wxjava是什么二、使用步骤1.引入依赖2.配置yml3.小程序的配置4.后端的业务逻辑代码controllerserviceimpldto 5.前端的业务逻辑代码新建...
    99+
    2023-09-09
    微信小程序 spring boot 小程序
  • uniapp开发小程序,实现获取【微信授权登录】功能
    APP微信授权登录需要到微信开放平台申请,在HBuilderX配置APP SDK中微信登录的appId,另外需要跟小程序、公众号授权账号互通的话也需要在微信开放平台申请 1、在微信公众平台申请应用,获取相应的appid和appsecret ...
    99+
    2023-09-28
    uni-app 小程序 微信
  • 微信小程序实现授权登录之怎么获取用户信息
    这篇文章主要讲解了“微信小程序实现授权登录之怎么获取用户信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序实现授权登录之怎么获取用户信息”吧!小程序登录小程序可以通过微信官方提供的...
    99+
    2023-06-30
  • 微信小程序如何授权登录
    小编给大家分享一下微信小程序如何授权登录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!注:没有在微信开放平台做开发者资质认证的就...
    99+
    2024-04-02
  • 怎么授权登录微信小程序
    本篇文章为大家展示了怎么授权登录微信小程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。授权登录的基本流程上图是微信小程序官网提供的授权登录基本流程图,这里我只从前端开发的角度来讲解一下该流程。通过...
    99+
    2023-06-08
  • 微信小程序如何实现授权登录
    这篇文章给大家分享的是有关微信小程序如何实现授权登录的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入...
    99+
    2024-04-02
  • 简单实现微信小程序授权登录
    可以直接复制粘贴,只需要改一些东西就可以了 首先在wxml中用微信自带的button开放属性 授权登录 然后在对应的js中创建一个login方法,因为上面bindtap指向的是login,所以就要创建一个新的方法 login(evt){/...
    99+
    2023-10-04
    php 微信小程序
  • 微信小程序实现token登录
    微信小程序实现token登录 微信小程序登录流程 前端先调用wx.login()接口获取code,再把code发个后端 login() { wx.login({ success: (res)...
    99+
    2023-09-07
    微信小程序 小程序 java
  • 微信小程序中如何获取用户手机号授权登录
    随着微信小程序的普及,许多应用程序需要用户登录才能提供更好的服务。而获取用户手机号码是验证用户身份和确保账户安全的重要步骤之一。因此,在本文中,我们将介绍如何在微信小程序中实现手机号授权登录。 步骤一:在小程序后台添加手机号授权 首先,在小...
    99+
    2023-08-17
    微信小程序 小程序 前端 javascript vue.js
  • 基于Thinkphp5+EasyWeChat+fastadmin微信小程序授权登录&获取手机号&微信公众号网页---联合授权登录
    战前准备 使用 composer 安装 EasyWeChat $ composer require overtrue/wechat:~4.0 -vvv 或者在composer.json文件renqui...
    99+
    2023-09-12
    php
  • 如何实现微信小程序之授权登录
    这篇文章主要介绍如何实现微信小程序之授权登录,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.实现思路自己写一个微信授权登录页面让用户实现点击的功能,也就是实现了通过 button 组件去触发 getUserInof...
    99+
    2023-06-14
  • 微信小程序开发之用户授权登录的方法
    这篇文章将为大家详细讲解有关微信小程序开发之用户授权登录的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。准备:微信开发者工具下载地址:https://developers.weixin.qq.com/...
    99+
    2023-06-14
  • 微信小程序授权登录的优雅处理方式
    前言 当微信小程序项目中涉及到获取用户信息并实现用户登录时,可以通过微信官方提供的登录能力方便地获取微信的用户身份标识,快速建立小程序内的用户体系。官方文档只是提供如何去调用授权登...
    99+
    2024-04-02
  • 如何实现uni-app微信小程序授权登录
    小编给大家分享一下如何实现uni-app微信小程序授权登录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、appID相关申请和配置1. appid获取方式登录微...
    99+
    2023-06-22
  • 微信小程序授权登录功能如何实现
    这篇文章主要介绍“微信小程序授权登录功能如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序授权登录功能如何实现”文章能帮助大家解决问题。微信授权登录我们的项目开发有时候用到用户的一些信...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作