日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Springboot+Shiro記錄用戶登錄信息并獲取當前登錄用戶信息的實現代碼

瀏覽:107日期:2023-05-18 16:35:54

由于最近做項目需要,在用戶登陸后有一個功能是需要用戶的信息,進行寫入數據庫的操作。但是目前還用不到Shiro的高級權限,只為了簡單獲取用戶信息,自己整合了一個只記錄用戶,獲取用戶信息的功能。

導入Shiro依賴

<!-- Shiro --><dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version></dependency>

User類

這個類只需要自己定義一個username(可以其他的phone、email都行)和password(密碼)就可以,其他的可以自己擴充。

UserRealm(核心)

這個類的功能:1、用戶的授權操作,但是這里先不授予權限(后續可以在這里補充)2、用戶認證,這里有三種認證結果。

① 用戶登錄成功② 拋出UnknownAccountException異常,表示獲取的user是null 。③ 拋出IncorrectCredentialsException異常,表示這個user的密碼錯誤。

import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.AuthenticationInfo;import org.apache.shiro.authc.AuthenticationToken;import org.apache.shiro.authc.SimpleAuthenticationInfo;import org.apache.shiro.authc.UsernamePasswordToken;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.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;/** * 自定義Realm */public class UserRealm extends AuthorizingRealm { @Autowired(required = false) private UserService userService; private final Logger logger = LoggerFactory.getLogger(UserRealm.class); /** * 執行授權邏輯 * * @param arg0 * @return */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) { System.out.println('執行授權邏輯'); //給資源進行授權 SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); //不授權先不寫 return info; } /** * 執行認證邏輯 * * @param arg0 * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException { System.out.println('執行認證邏輯'); // 編寫shiro判斷邏輯,判斷用戶名和密碼 UsernamePasswordToken token = (UsernamePasswordToken) arg0; // 判斷用戶名 User user = userService.findUserByPhone(token.getUsername()); if (user == null) { // 該用戶不存在 return null; // shiro底層會拋出UnKnowAccountException } return new SimpleAuthenticationInfo(user, user.getPassword(), ''); // 判斷密碼 }}

ShiroConfig類(核心)

代碼基本不需要修改,根據個人不同的情況,需要修改的地方是第一個方法。這里修改的原因是,每個人想要攔截的頁面都不一樣。因為我沒有做任何的授權,我使用了

filterMap.put('/*', 'anon');

為所有的頁面,都開啟了放行,無需認證就可以訪問,代碼中注釋部分是權限的定義

import java.util.LinkedHashMap;import java.util.Map;import org.apache.shiro.spring.web.ShiroFilterFactoryBean;import org.apache.shiro.web.mgt.DefaultWebSecurityManager;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * Shiro的配置類 */@Configurationpublic class ShiroConfig { /** * 創建ShiroFilterFactoryBean * * @param securityManager * @return */ @Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier('securityManager') DefaultWebSecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); //設置安全管理器 shiroFilterFactoryBean.setSecurityManager(securityManager); //添加Shiro內置過濾器 /** * Shiro內置過濾器,可以實現權限相關的攔截器 * 常用的過濾器: * anon: 無需認證(登錄)可以訪問 * authc: 必須認證才可以訪問 * user: 如果使用rememberMe的功能可以直接訪問 * perms: 該資源必須得到資源權限才可以訪問 * role: 該資源必須得到角色權限才可以訪問 */ Map<String, String> filterMap = new LinkedHashMap<String, String>(); // 放行login.html頁面 filterMap.put('/login', 'anon'); // 要將登陸的接口放出來,不然沒權限訪問登陸的接口 // 授權過濾器 // 注意:當前授權攔截后,shiro會自動跳轉到未授權頁面 filterMap.put('/*', 'anon'); // TODO 此處我做過修改 shiroFilterFactoryBean.setLoginUrl('/login'); // 修改調整的登錄頁面 shiroFilterFactoryBean.setUnauthorizedUrl('/403'); // 設置未授權提示頁面 shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap); return shiroFilterFactoryBean; } /** * 創建DefaultWebSecurityManager * * @param userRealm * @return */ @Bean(name = 'securityManager') public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier('userRealm') UserRealm userRealm) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(userRealm); // 關聯realm return securityManager; } /** * 創建Realm * * @return */ @Bean(name = 'userRealm') public UserRealm getRealm() { return new UserRealm(); }}

UserController類(用戶登錄)

這里就是登陸成功,以及拋出兩個異常的地方。

/** * 用戶登錄 * * @param request * @return */@PostMapping('/userLogin')@ResponseBodypublic String userLogin(HttpServletRequest request) { String phone = request.getParameter('phone'); String password = request.getParameter('password'); String result = ''; Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(phone, password); try { subject.login(token); result = '登陸成功'; } catch (UnknownAccountException e) { result = '用戶名不存在'; } catch (IncorrectCredentialsException e) { result = '密碼錯誤'; } return result;}

這樣就完成了記錄用戶登錄信息,并且完成登錄。唯一有可能遇到的問題是網頁的問題,這里需要在ShiroConfig類第一個方法里去配置。

獲取當前用戶登錄信息

只需要這一條語句就可以

User user = (User) SecurityUtils.getSubject().getPrincipal(); // 獲取當前登錄用戶

到此這篇關于Springboot+Shiro記錄用戶登錄信息并獲取當前登錄用戶信息的文章就介紹到這了,更多相關Springboot+Shiro用戶登錄信息內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲青青久久| 7777精品| 欧美日本一区| 在线一区视频| 国产h片在线观看| 日本午夜精品| 欧美专区在线| 激情综合网址| 日韩精品专区| 精品一区不卡| 国产精品一区二区免费福利视频| 国产在线欧美| 亚洲在线观看| 色8久久久久| 性欧美长视频| 成人欧美一区二区三区的电影| 激情中国色综合| 免费成人性网站| 一区二区三区视频免费观看| 亚洲最新无码中文字幕久久| 国产高清日韩| 国产精品自拍区| 国产欧美久久一区二区三区| 亚洲精品在线a| 蜜桃视频免费观看一区| 2023国产精品久久久精品双| 美女久久一区| 国产精品一线| 国产精品mm| 国产欧美日韩一级| 国产免费av一区二区三区| 亚洲欧美网站在线观看| 国产婷婷精品| 国产亚洲精品v| 国产亚洲精品自拍| 免费观看不卡av| 欧美二区视频| 国产高清久久| 亚洲调教视频在线观看| 加勒比视频一区| 国产成人免费| 欧美黄页在线免费观看| 欧美a在线观看| 欧美激情一区| 精品国产aⅴ| 97在线精品| 日韩影院二区| 五月天久久久| 亚洲尤物av| 日韩av网站在线观看| 国产精品视频一区二区三区综合| 国产精品宾馆| 国产精品地址| 久久久久久久欧美精品| 国产日韩欧美一区在线| 国产欧美日韩精品高清二区综合区 | 蜜桃av一区二区三区电影| 亚洲最大av| 日本a级不卡| 国产精品**亚洲精品| 精品亚洲二区| 国产拍在线视频| 欧美成人亚洲| 亚洲一二三区视频| 国产精品一区高清| 国产精品毛片久久| 午夜日韩av| 91国内精品| 国产99在线| 九色精品91| 亚洲开心激情| 亚洲一二av| 麻豆一区二区在线| 卡一卡二国产精品| 欧美亚洲精品在线| 日本va欧美va瓶| 国产亚洲精aa在线看 | 国产成人精品亚洲线观看| 日韩av网站在线观看| 国产精品精品国产一区二区| 欧美日韩国产欧| 日韩毛片网站| 国产日韩亚洲欧美精品| 精品日韩视频| 日韩高清电影免费| 神马久久午夜| 亚洲专区视频| 精品不卡一区| 国产精品美女久久久久久不卡| 国产欧美日韩精品高清二区综合区| 日韩极品在线观看| 亚洲播播91| 日韩精品视频在线看| аⅴ资源天堂资源库在线| 日韩精品一卡二卡三卡四卡无卡| 四虎国产精品免费久久| 国产亚洲精品美女久久 | 国产视频久久| 精品91福利视频| 亚洲一区区二区| 里番精品3d一二三区| 亚洲激情黄色| 国产欧美一区二区三区米奇| 91亚洲一区| 亚洲免费资源| 中文一区一区三区高中清不卡免费| 国产福利一区二区精品秒拍 | 一本色道精品久久一区二区三区| 国产情侣久久| 久久www成人_看片免费不卡| 精品72久久久久中文字幕| 免费人成黄页网站在线一区二区 | 欧美在线资源| 国产欧美日韩免费观看| 亚洲激情av| 国产videos久久| 日韩精品欧美大片| 欧美日中文字幕| 国产精品99久久免费| 欧美一区二区性| 久久久91麻豆精品国产一区| 免费成人性网站| 99精品综合| 高清av一区| 久久99蜜桃| 最新国产精品久久久| 久久香蕉国产| 精品成人18| 欧美视频久久| 伊人久久亚洲影院| 久久久成人网| 国产一区国产二区国产三区 | 久久影视三级福利片| 日韩精品一级二级 | 91高清一区| 日韩精品免费一区二区三区| 另类综合日韩欧美亚洲| 最新国产精品| 一本一道久久a久久精品蜜桃| 国产精品毛片aⅴ一区二区三区| 蜜桃视频在线观看一区| 亚洲视频综合| 日韩三区在线| 亚洲黄色免费看| 激情不卡一区二区三区视频在线| 国产亚洲字幕| 欧美日韩一区二区国产| 亚洲精品第一| 在线精品亚洲| 蜜臀av在线播放一区二区三区| 美女网站一区| 欧美精品羞羞答答| 欧美va亚洲va日韩∨a综合色| 欧美日韩一区二区三区在线电影| 日本在线高清| 欧美天堂视频| 91亚洲精品视频在线观看 | 免费一级欧美在线观看视频| 日韩中文字幕视频网| 成人av二区| 国产综合婷婷| 午夜欧美精品久久久久久久| 九一精品国产| 久久精品123| 欧美~级网站不卡| 中文字幕在线免费观看视频| av中文资源在线资源免费观看| 日韩精品视频中文字幕| 欧美日韩午夜| 欧美极品中文字幕| 69堂免费精品视频在线播放| 日韩精品乱码av一区二区| 欧美综合社区国产| 另类专区亚洲| 久久一区二区三区喷水| 婷婷亚洲五月| 久热精品在线| 国产精品一区二区精品| 久久91视频| 九色porny丨国产首页在线| 国产亚洲一区二区手机在线观看| 国产91精品对白在线播放| 亚洲精品乱码日韩| 国产精品久久亚洲不卡| 久久精品在线| 在线精品一区二区| 久久久久久夜| 午夜精品亚洲| 久久av免费| 伊人久久大香线蕉av不卡| 日韩高清欧美激情| 国产一区国产二区国产三区| 亚洲色诱最新| 国产麻豆一区二区三区精品视频| 久久久五月天| 一二三区精品| 一本大道色婷婷在线| 亚洲色图综合| 成人精品天堂一区二区三区| 蜜桃视频在线观看一区|