亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 幫助中心 > 正文

Spring boot整合shiro+jwt實現前后端分離

2024-07-09 22:42:40
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Spring boot整合shiro+jwt實現前后端分離的具體代碼,供大家參考,具體內容如下

這里內容很少很多都為貼的代碼,具體內容我經過了看源碼和帖子加了注釋。帖子就沒用太多的內容

先下載shiro和jwt的jar包

<!-- shiro包 --><dependency>  <groupId>org.apache.shiro</groupId>  <artifactId>shiro-spring</artifactId>  <version>1.4.0</version></dependency><dependency>  <groupId>org.apache.shiro</groupId>  <artifactId>shiro-ehcache</artifactId>  <version>1.4.0</version></dependency><!--JWT依賴--><!--JWT--><dependency>  <groupId>com.auth0</groupId>  <artifactId>java-jwt</artifactId>  <version>3.4.0</version></dependency><!--JJWT--><dependency>   <groupId>io.jsonwebtoken</groupId>   <artifactId>jjwt</artifactId>   <version>0.9.0</version></dependency>

創建shiro的自定義的Realm

代碼如下:

package com.serverprovider.config.shiro.userRealm;  import com.spring.common.auto.autoUser.AutoUserModel;import com.spring.common.auto.autoUser.extend.AutoModelExtend;import com.serverprovider.config.shiro.jwt.JWTCredentialsMatcher;import com.serverprovider.config.shiro.jwt.JwtToken;import com.serverprovider.service.loginService.LoginServiceImpl;import com.util.Redis.RedisUtil;import com.util.ReturnUtil.SecretKey;import com.util.encryption.JWTDecodeUtil;import io.jsonwebtoken.Claims;import org.apache.log4j.Logger;import org.apache.shiro.authc.*;import org.apache.shiro.authz.AuthorizationInfo;import org.apache.shiro.authz.SimpleAuthorizationInfo;import org.apache.shiro.realm.AuthorizingRealm;import org.apache.shiro.subject.PrincipalCollection;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.ExceptionHandler; import java.util.HashSet;import java.util.List;import java.util.Set; public class UserRealm extends AuthorizingRealm {   private Logger logger = Logger.getLogger(UserRealm.class);    @Autowired private LoginServiceImpl loginService;    public UserRealm(){    //這里使用我們自定義的Matcher驗證接口    this.setCredentialsMatcher(new JWTCredentialsMatcher());  }   /**   * 必須重寫此方法,不然Shiro會報錯   */  @Override  public boolean supports(AuthenticationToken token) {    return token instanceof JwtToken;  }   /**   * shiro 身份驗證   * @param token   * @return boolean   * @throws AuthenticationException 拋出的異常將有統一的異常處理返回給前端   *   */  @Override  protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)throws AuthenticationException {    /**     * AuthenticationToken     * JwtToken重寫了AuthenticationToken接口 并創建了一個接口token的變量     *  因為在filter我們將token存入了JwtToken的token變量中     *  所以這里直接getToken()就可以獲取前端傳遞的token值     */      String JWTtoken = ((JwtToken) token).getToken();    /**     * Claims對象它最終是一個JSON格式的對象,任何值都可以添加到其中     * token解密 轉換成Claims對象     */       Claims claims = JWTDecodeUtil.parseJWT(JWTtoken, SecretKey.JWTKey);          /**     *  根據JwtUtil加密方法加入的參數獲取數據     *  查詢數據庫獲得對象     *  如為空:拋出異常     *  如驗證失敗拋出 AuthorizationException     */      String username = claims.getSubject();      String password = (String) claims.get("password");      AutoModelExtend principal = loginService.selectLoginModel(username,password);      return new SimpleAuthenticationInfo(principal, JWTtoken,"userRealm");  }    @Override  protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {    SimpleAuthorizationInfo info = null;    /**     * PrincipalCollection對象     * 文檔里面描述:返回從指定的Realm 僅作為Collection 返回的單個Subject的對象,如果沒有來自該領域的任何對象,則返回空的Collection。     * 在登錄接口放入權限注解返回的錯誤信息:Subject.login(AuthenticationToken)或SecurityManager啟用'Remember Me'功能后成功自動獲取這些標識主體     * 當調用Subject.login()方法成功后 PrincipalCollection會自動獲得該對象 如沒有認證過或認證失敗則返回空的Collection并拋出異常     * getPrimaryPrincipal():返回在應用程序范圍內使用的主要對象,以唯一標識擁有帳戶。     */    Object principal = principals.getPrimaryPrincipal();    /**     * 得到身份對象     * 查詢該用戶的權限信息     */    AutoUserModel user = (AutoUserModel) principal;    List<String> roleModels = loginService.selectRoleDetails(user.getId());    try {    /**     * 創建一個Set,來放置用戶擁有的權限     * 創建 SimpleAuthorizationInfo, 并將辦好權限列表的Set放入.     */    Set<String> rolesSet = new HashSet();    for (String role : roleModels) {      rolesSet.add(role);    }    info = new SimpleAuthorizationInfo();    info.setStringPermissions(rolesSet);  // 放入權限信息  }catch (Exception e){    throw new AuthenticationException("授權失敗!");  }    return info;  }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人久久久精品一区| 亚洲自拍偷拍区| 国产欧美日韩精品在线观看| 国产美女直播视频一区| 伊人久久久久久久久久| 俺也去精品视频在线观看| 日本精品一区二区三区在线播放视频| 欧美精品久久久久| 中文字幕亚洲无线码a| 在线性视频日韩欧美| 日韩专区在线播放| 国产热re99久久6国产精品| 欧美不卡视频一区发布| 日韩电影大片中文字幕| 中文字幕国产亚洲| 欧美日韩电影在线观看| 国产成人综合av| 欧美第一黄色网| 亚洲天堂免费观看| 亚洲精品少妇网址| 国产精品99蜜臀久久不卡二区| 最近2019中文字幕大全第二页| 国产精品一区二区三区毛片淫片| 91在线免费网站| 国产成人精品一区二区在线| 国产精品视频专区| 黑人巨大精品欧美一区二区三区| 欧美日韩亚洲系列| 91精品国产91| 欧美日韩精品中文字幕| 色偷偷888欧美精品久久久| 91九色综合久久| 在线视频欧美日韩| 伊人久久久久久久久久久久久| 成人信息集中地欧美| 色伦专区97中文字幕| 91老司机精品视频| 亚洲男人天堂2023| 国产ts人妖一区二区三区| 欧美激情在线视频二区| 91美女片黄在线观| 在线国产精品播放| 欧美日韩国内自拍| 国产美女精品视频免费观看| 欧美日韩国产色| 国内精品视频一区| 久久久成人的性感天堂| 疯狂蹂躏欧美一区二区精品| 亚洲第一男人天堂| 亚洲成色777777女色窝| 日韩中文字幕视频| 亚洲女人被黑人巨大进入| 欧美理论电影在线观看| 亚洲xxxx视频| 久久99视频精品| 欧美另类极品videosbest最新版本| 久久免费福利视频| 亚洲三级免费看| 欧洲精品久久久| 亚洲午夜精品久久久久久久久久久久| 久久视频精品在线| 国产精品永久免费观看| 国产精品精品一区二区三区午夜版| 成人写真福利网| 国产精品久久久久久av下载红粉| 91久久国产综合久久91精品网站| 精品性高朝久久久久久久| 国产精品一二区| 久久97久久97精品免视看| 日韩hd视频在线观看| 欧美伦理91i| 成人看片人aa| 91免费综合在线| 97国产精品视频人人做人人爱| 国内精品一区二区三区四区| 2021国产精品视频| 国产精品欧美一区二区三区奶水| 久久久久久97| 97av在线视频免费播放| 亚洲精品日产aⅴ| 精品偷拍各种wc美女嘘嘘| 久久不射电影网| 日韩中文在线观看| 最近2019年手机中文字幕| 日韩欧美在线观看视频| 国产伦精品一区二区三区精品视频| www.久久撸.com| 一区二区在线视频播放| 精品国产老师黑色丝袜高跟鞋| 亚洲免费伊人电影在线观看av| 一区二区三区动漫| 国产精品视频网址| 国产视频精品在线| 欧美孕妇与黑人孕交| 91精品久久久久| 亚洲人成在线观看网站高清| 久久久久久久久中文字幕| 亚洲性生活视频在线观看| 久久久亚洲福利精品午夜| 日韩电影免费观看在线| 色婷婷综合久久久久| 亚洲最大福利视频| 97精品免费视频| 日韩色av导航| 国产999精品久久久影片官网| 日韩综合视频在线观看| 在线看日韩av| 国产精品中文在线| 国产精品久久色| 国内精品久久久久影院优| 欧美在线观看日本一区| 欧美在线亚洲在线| 亚洲精品欧美一区二区三区| 亚洲色图第三页| 国产精品久久久久久久一区探花| 精品国产一区二区三区久久狼黑人| 欧美国产精品日韩| 91免费观看网站| 97精品国产aⅴ7777| 亚洲第一av网| 日本精品性网站在线观看| 国产精品毛片a∨一区二区三区|国| 性视频1819p久久| 亚洲精品福利在线观看| 国产日韩视频在线观看| 国产香蕉一区二区三区在线视频| 国产精品久久91| 久久天天躁狠狠躁夜夜爽蜜月| 日本免费一区二区三区视频观看| 欧美在线视频一区| 国产精品18久久久久久首页狼| 亚洲女人天堂网| 欧美性猛交xxxx乱大交蜜桃| 精品国产91久久久久久老师| 欧美天堂在线观看| 欧美激情videos| 久久久久国产一区二区三区| 欧美日韩精品在线视频| 国产精品mp4| 高清欧美性猛交xxxx黑人猛交| 久久精品99久久香蕉国产色戒| 亚洲色图日韩av| 亚洲自拍另类欧美丝袜| 久久国产精品久久久久| 亚洲一区二区三区乱码aⅴ| 久久精品国产亚洲精品| 欧美激情亚洲激情| 日韩精品中文在线观看| 国产极品精品在线观看| 高清日韩电视剧大全免费播放在线观看| 国产精品久久久久久久美男| 欧美亚洲在线播放| www亚洲精品| 色吧影院999| 国产精品成人一区二区| 亚洲欧美日韩一区二区三区在线| 欧美大片大片在线播放| 亚洲色在线视频| 中文字幕国产亚洲| 日韩视频免费大全中文字幕| 欧美日韩在线视频观看| 国产不卡视频在线| 亚洲美女免费精品视频在线观看| 色综合视频一区中文字幕|