91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 怎么在springboot中使用jwt與springSecurity實現一個微信小程序授權登錄功能

怎么在springboot中使用jwt與springSecurity實現一個微信小程序授權登錄功能

發布時間:2021-01-25 15:35:43 來源:億速云 閱讀:395 作者:Leah 欄目:開發技術

怎么在springboot中使用jwt與springSecurity實現一個微信小程序授權登錄功能?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

通過自定義的WxAppletAuthenticationFilter替換默認的UsernamePasswordAuthenticationFilter,在UsernamePasswordAuthenticationFilter中可任意定制自己的登錄方式。

springSecurity的原來的登錄過濾器UsernamePasswordAuthenticationFilter

怎么在springboot中使用jwt與springSecurity實現一個微信小程序授權登錄功能

采用賬戶+密碼的形式

怎么在springboot中使用jwt與springSecurity實現一個微信小程序授權登錄功能

說明我微信小程序這里很有可能不適用要升級,因為微信小程序采用openid的形式登錄,而沒有password

用戶認證

需要結合JWT來實現用戶認證,第一步登錄成功后如何頒發token。

關鍵點

使用cn.hutool.http請求第三方數據

 <dependency>
  <groupId>cn.hutool</groupId>
  <artifactId>hutool-all</artifactId>
  <version>4.5.16</version>
 </dependency>

說明:請求第三方數據時,需要授權。

第三方(微信小程序)會給到appid和secret,請求攜帶appid和secret獲取一個token和expires,又了token就又了操作第三方數據的權限。

每次操作第三方數據時就需要攜帶token。

package com.shbykj.springboot.wx.security.handler;

import cn.hutool.http.ContentType;
import com.alibaba.fastjson.JSON;
import com.shbykj.springboot.wx.enums.ConstantEnum;
import com.shbykj.springboot.wx.security.WxAppletAuthenticationToken;
import com.shbykj.springboot.wx.util.JwtTokenUtils;
import org.apache.http.entity.ContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * 用戶認證通過的處理handler
 */
public class CustomAuthenticationSuccessHandler implements AuthenticationSuccessHandler {

 @Autowired
 private JwtTokenUtils jwtTokenUtils;

 @Override
 public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
 // 使用jwt管理,所以封裝用戶信息生成jwt響應給前端
 String token = jwtTokenUtils.generateToken(((WxAppletAuthenticationToken)authentication).getOpenid());
 Map<String, Object> result = new HashMap<>();
 result.put(ConstantEnum.AUTHORIZATION.getValue(), token);
 httpServletResponse.setContentType(ContentType.JSON.toString());
 httpServletResponse.getWriter().write(JSON.toJSONString(result));
 }
}

看完上述內容,你們掌握怎么在springboot中使用jwt與springSecurity實現一個微信小程序授權登錄功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘潭县| 永定县| 台安县| 南安市| 九寨沟县| 嵩明县| 会同县| 扎鲁特旗| 府谷县| 广宁县| 乌兰浩特市| 中山市| 永吉县| 志丹县| 太原市| 长寿区| 类乌齐县| 霍邱县| 广元市| 外汇| 平遥县| 方城县| 泽库县| 海兴县| 怀远县| 庐江县| 尚志市| 绥滨县| 阜平县| 张家口市| 保定市| 特克斯县| 潼南县| 东港市| 读书| 新密市| 五大连池市| 万荣县| 漯河市| 台南县| 建始县|