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

您的位置:首頁技術(shù)文章
文章詳情頁

Springboot+Shiro記錄用戶登錄信息并獲取當(dāng)前登錄用戶信息的實現(xiàn)代碼

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

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

導(dǎo)入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、用戶的授權(quán)操作,但是這里先不授予權(quán)限(后續(xù)可以在這里補充)2、用戶認證,這里有三種認證結(jié)果。

① 用戶登錄成功② 拋出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); /** * 執(zhí)行授權(quán)邏輯 * * @param arg0 * @return */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) { System.out.println('執(zhí)行授權(quán)邏輯'); //給資源進行授權(quán) SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); //不授權(quán)先不寫 return info; } /** * 執(zhí)行認證邏輯 * * @param arg0 * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException { System.out.println('執(zhí)行認證邏輯'); // 編寫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類(核心)

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

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

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

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 { /** * 創(chuàng)建ShiroFilterFactoryBean * * @param securityManager * @return */ @Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier('securityManager') DefaultWebSecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); //設(shè)置安全管理器 shiroFilterFactoryBean.setSecurityManager(securityManager); //添加Shiro內(nèi)置過濾器 /** * Shiro內(nèi)置過濾器,可以實現(xiàn)權(quán)限相關(guān)的攔截器 * 常用的過濾器: * anon: 無需認證(登錄)可以訪問 * authc: 必須認證才可以訪問 * user: 如果使用rememberMe的功能可以直接訪問 * perms: 該資源必須得到資源權(quán)限才可以訪問 * role: 該資源必須得到角色權(quán)限才可以訪問 */ Map<String, String> filterMap = new LinkedHashMap<String, String>(); // 放行l(wèi)ogin.html頁面 filterMap.put('/login', 'anon'); // 要將登陸的接口放出來,不然沒權(quán)限訪問登陸的接口 // 授權(quán)過濾器 // 注意:當(dāng)前授權(quán)攔截后,shiro會自動跳轉(zhuǎn)到未授權(quán)頁面 filterMap.put('/*', 'anon'); // TODO 此處我做過修改 shiroFilterFactoryBean.setLoginUrl('/login'); // 修改調(diào)整的登錄頁面 shiroFilterFactoryBean.setUnauthorizedUrl('/403'); // 設(shè)置未授權(quán)提示頁面 shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap); return shiroFilterFactoryBean; } /** * 創(chuàng)建DefaultWebSecurityManager * * @param userRealm * @return */ @Bean(name = 'securityManager') public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier('userRealm') UserRealm userRealm) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(userRealm); // 關(guān)聯(lián)realm return securityManager; } /** * 創(chuàng)建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;}

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

獲取當(dāng)前用戶登錄信息

只需要這一條語句就可以

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

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

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美在线精品一区| 国产精品久久乐| 国产精品videossex久久发布 | 欧美成人a交片免费看| 国产激情久久| 亚洲夜间福利| 午夜av不卡| 91精品推荐| 国产极品模特精品一二| 激情欧美日韩一区| 日本亚洲视频| 日韩欧美中文字幕在线视频| 在线一区二区三区视频| 久久久久久网| 亚洲黄色免费看| 亚洲一级特黄| 亚洲一区久久| 国产成年精品| 91青青国产在线观看精品| 欧美日韩视频免费观看| 青草国产精品| 国产毛片精品久久| 精品资源在线| 日本不卡高清| 国产欧美日韩| 国产一区精品福利| 成人看片网站| 欧美日韩国产精品一区二区亚洲| 欧美jjzz| 亚洲激情不卡| 电影91久久久| 综合亚洲视频| 久久精品99国产精品| 精品国产精品国产偷麻豆| 国产精品毛片在线| 国产精品亚洲人成在99www| 日本精品一区二区三区在线观看视频 | 亚洲一区欧美二区| 亚洲一级大片| 香蕉成人久久| 99久久夜色精品国产亚洲1000部| 性欧美videohd高精| 国产精品大片| 99久久久久久中文字幕一区| 亚洲一级二级| 丝袜av一区| 免费毛片在线不卡| 国产情侣一区在线| 岛国av在线网站| 妖精视频成人观看www| www.九色在线| 911精品国产| 中文字幕日韩亚洲| 日本一区中文字幕| 日韩免费高清| 国产精品久久久久久久久久妞妞| 麻豆极品一区二区三区| 国产亚洲人成a在线v网站| 欧美亚洲国产一区| 中文字幕一区日韩精品| 欧美~级网站不卡| 久久大逼视频| 在线亚洲一区| 日韩电影免费网站| 精品免费av一区二区三区| 伊人久久视频| 久久国产毛片| 国产欧美日韩综合一区在线播放| 蜜桃视频在线观看一区二区| 国产精品av久久久久久麻豆网| 午夜在线播放视频欧美| 久久精品国产网站| 亚洲国产一区二区在线观看| 欧美日韩中出| 在线一区电影| 国产精品一站二站| 亚洲一区网站| 日韩不卡一区| 色综合www| 老司机精品久久| 蜜臀国产一区| 日本成人在线不卡视频| 麻豆一区二区三| 亚洲aa在线| 亚洲成人不卡| 国产精品17p| 最新国产拍偷乱拍精品| 久久国产精品99国产| 国产精品综合| 影音先锋国产精品| 午夜日韩福利| 麻豆成人综合网| av资源亚洲| 蜜臀av国产精品久久久久| 美女网站视频一区| 日本aⅴ亚洲精品中文乱码| 偷拍精品精品一区二区三区| 亚洲性色视频| 伊人影院久久| 水蜜桃精品av一区二区| 免费欧美在线视频| 欧美丰满日韩| 久久精品欧洲| 国产精品二区不卡| 日韩高清不卡在线| 亚洲国产欧美日本视频| 激情视频一区二区三区| 国产欧美日韩一区二区三区在线| 中文字幕免费一区二区| 亚洲精品成人一区| 不卡av一区二区| 国产一区二区三区不卡av| 日韩精品91亚洲二区在线观看| 国产美女视频一区二区| 亚洲激情五月| 欧美91在线| 亚洲精品免费观看| 久久国产精品久久w女人spa| 99视频精品视频高清免费| 欧产日产国产精品视频| 国产精品777777在线播放| 99精品视频在线| 欧美国产日韩电影| 欧美sm一区| 日本黄色精品| 美女国产一区二区三区| 久久不见久久见免费视频7| 久久亚洲电影| 91青青国产在线观看精品| 久久三级福利| 久久精品国产999大香线蕉| 国产精品美女午夜爽爽| 国产精品久久久久久久久妇女| 国产精品激情| 午夜av不卡| av在线最新| 成人台湾亚洲精品一区二区| 成人午夜亚洲| 黄色精品视频| 日本不卡视频在线| 成人在线黄色| 国内精品麻豆美女在线播放视频| 国产精品主播| 国产一区二区高清| 一区在线免费| 91一区二区三区四区| 亚洲激情另类| 久久精品国产精品亚洲毛片| 欧美视频精品全部免费观看| 99国产精品私拍| 国产精品主播| 久久久精品国产**网站| 亚洲作爱视频| 成人片免费看| 日本不良网站在线观看| 国产伊人精品| 91成人精品| 四虎在线精品| 国产亚洲欧美日韩在线观看一区二区| 国产亚洲在线| 午夜在线精品偷拍| 久久狠狠久久| 国产精品久久久亚洲一区| 97视频热人人精品免费| 久久久久一区| 丝袜美腿一区二区三区| 亚洲区国产区| 国产激情一区| 蜜桃av一区二区三区电影| 久久91导航| 91精品一区二区三区综合| 日韩天堂av| 蜜桃视频第一区免费观看| 亚洲黄色在线| 丝袜诱惑制服诱惑色一区在线观看 | 国产精品久久久久久久免费观看| 国产精品片aa在线观看 | 久久xxxx精品视频| 91精品视频一区二区| 欧美精品aa| 国产精品亚洲人成在99www| 欧美中文高清| 99久久亚洲精品| 免费中文字幕日韩欧美| 日韩欧美高清一区二区三区| 麻豆9191精品国产| 国产成人精品亚洲线观看| 久久久成人网| 蜜臀av一区二区三区| 日韩成人a**站| 亚洲精品裸体| 久久一二三区| 国产精品亚洲四区在线观看| 国产精品黄色| 日本v片在线高清不卡在线观看| 亚洲久久在线| 综合激情视频| 风间由美中文字幕在线看视频国产欧美| 国产精品美女久久久| 香蕉成人av|