微信小程序 jwt刷新token方案,

  微信小程序 jwt刷新token方案,

  

目录

前言配置XcxAuthenticationProviderXcxAuthenticationToken小程序授权登录

 

  

前言

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

 

  

配置

在安全配置文件中配置

 

  

XcxAuthenticationProvider

公共类XcxAuthenticationProvider实现AuthenticationProvider { private userdailsservice userdailsservice;@覆盖公共验证验证(验证验证)抛出AuthenticationException { XcxAuthenticationToken身份验证令牌=(XcxAuthenticationToken)身份验证;String openId=(String)authenticationtoken。get principal();XcxUserService service=springcontextutil。获取上下文().获取bean(xcxuserservice。类);用户详细信息用户详细信息=服务。loaduserbyopenid(openId);//此时鉴权成功后,应当重新新的一个拥有鉴权的认证结果返回XcxAuthenticationToken authenticationResult=new XcxAuthenticationToken(用户详细信息,用户详细信息。getauthorities());认证结果。设置详细信息(authenticationtoken。获取详细信息());返回authenticationResult} @覆盖公共布尔支持(类?身份验证){ //判断证明是不是SmsCodeAuthenticationToken的子类或子接口返回xcxauthenticationtoken。班级。isassignablefrom(身份验证);} public userdailsservice getuserdailsservice(){ return userdailsservice;} public void setuserdailsservice(userdailsservice userdailsservice){ this。userdailsservice=userdailsservice;}}

 

  

XcxAuthenticationToken

公共类XcxAuthenticationToken扩展AbstractAuthenticationToken { private static final long serialVersionUID=420 l;私有最终对象主体;/** * 没登录之前,本金我们使用手机号* @ param OpenID */public XcxAuthenticationToken(String OpenID){ super((Collection)null);this.principal=openidthis。set authenticated(false);} /** * 登录认证之后,本金我们使用用户信息* @ param principal * @ param authorities */public XcxAuthenticationToken(对象主体,集合?扩展授予权限authorities){ super(权限);this.principal=principalsuper。set authenticated(真);}公共对象get credentials(){返回null}公共对象get principal(){ return this。本金;} public void set已验证(布尔值已验证)引发IllegalArgumentException { if(已通过身份验证){ throw new IllegalArgumentException(无法将此标记设置为可信使用构造函数,该构造函数改为采用授予权限列表);} else { super。set authenticated(false);} } public void eraseCredentials(){ super。eraseCredentials();}}

 

  

小程序授权登录

@ rest控制器@请求映射(/xcx )@ AllArgsConstructor @ Api(value=认证模块,标签=认证模块)公共类XcxAuthController { private JwtService JwtService;私有JwtUserDetail jwtUserDetail私有XcxUserService用户服务;私有AuthenticationManager AuthenticationManager;@RequestMapping(value=/login ,method=RequestMethod .POST) @ApiOperation(value=登录,注释=登录)公共结果登录(@RequestBody MapString,Object map) { HashMapString,Object hashMap=new hashMap();字符串代码=字符串。(地图的值。get( code );请尝试{ wx maservice wx maservice=wx ma配置。getwx maservice();wxmajscode 2会话结果session=wxmaservice。获取用户服务().getSessionInfo(代码);xcx用户用户=用户服务。买一个(包装纸.XcxUserlambdaQuery().eq(XcxUser:getOpenId,session.getOpenid()),false);if (ObjectUtil.isNull(user)) { //过滤掉表情user=XcxUser.builder().openId(session.getOpenid())//.昵称(wxMpUser.getNickName())//.头像(wxMpUser.getAvatarUrl()).build();userService.save(用户);} else { userservice。更新byid(用户);}用户详细信息user details=jwtuserdetail。loaduserbyopenid(会话。get OpenID());authenticationmanager。authenticate(new XcxAuthenticationToken(session。get OpenID()));MapString,Object parse=JSON。解析对象(JSON。tojsonstring(用户详细信息),map。类);string token=jwtservice。创建令牌(解析);hashMap.put(token ,token);hashMap.put(user ,用户详细信息);} catch(Exception e){ e . printstacktrace();}返回结果。成功(hashMap);}}这里就基本完成了小程序的授权登录获取代币的功能了,希望可以帮助到大家

 

  到此这篇关于跳羚智威汤逊广告公司微信小程序授权登录获取代币的方法实例的文章就介绍到这了,更多相关跳羚小程序授权登录获取代币内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: