电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

SpringBoot 整合 Shiro 密碼登錄的實(shí)現(xiàn)代碼

瀏覽:9日期:2023-03-23 18:07:36

導(dǎo)入依賴(lài)(pom.xml)

<!--整合Shiro安全框架--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency> <!--集成jwt實(shí)現(xiàn)token認(rèn)證--> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.2.0</version> </dependency>

創(chuàng)建 ShiroConfig 配置類(lèi)

@Configurationpublic class ShiroConfig { /** * ShiroFilterFactoryBean */ @Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier('securityManager') DefaultWebSecurityManager defaultWebSecurityManager) { ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean(); //設(shè)置安全管理器 factoryBean.setSecurityManager(defaultWebSecurityManager); // 添加shiro的內(nèi)置過(guò)濾器 /* * anon:無(wú)需認(rèn)證就可以訪問(wèn) * authc:必須認(rèn)證才能訪問(wèn) * user:必須擁有 記住我 功能才能用 * perms:擁有對(duì)某個(gè)資源的權(quán)限能訪問(wèn) * role:擁有某個(gè)角色權(quán)限能訪問(wèn) */ Map<String, String> filterMap = new LinkedHashMap<>(); // 放行不需要權(quán)限認(rèn)證的接口 //放行登錄接口 filterMap.put('/login/**', 'anon'); //放行用戶(hù)接口 filterMap.put('/', 'anon'); // 網(wǎng)站首頁(yè) //認(rèn)證管理員接口 filterMap.put('/administrators/**', 'authc'); factoryBean.setFilterChainDefinitionMap(filterMap); // 設(shè)置無(wú)權(quán)限時(shí)跳轉(zhuǎn)的 url // 設(shè)置登錄的請(qǐng)求 factoryBean.setLoginUrl('/login/toLogin'); return factoryBean; } /** * 注入 DefaultWebSecurityManager */ @Bean(name = 'securityManager') public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier('customRealm') CustomRealm customRealm) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); //關(guān)聯(lián)CustomRealm securityManager.setRealm(customRealm); return securityManager; } /** * 注入 securityManager */ @Bean public CustomRealm customRealm() { return new CustomRealm(); }}

創(chuàng)建密碼登錄時(shí)驗(yàn)證授權(quán) CustomRealm 類(lèi)

@Componentpublic class CustomRealm extends AuthorizingRealm { @Autowired AdministratorsService administratorsService; /* * 設(shè)置加密方式 */ { HashedCredentialsMatcher mather = new HashedCredentialsMatcher(); // 加密方式 mather.setHashAlgorithmName('md5'); // 密碼進(jìn)行一次運(yùn)算 mather.setHashIterations(512); this.setCredentialsMatcher(mather); } /** * 授權(quán) */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { System.out.println('————授權(quán)————doGetAuthorizationInfo————'); return null; } /** * 認(rèn)證 */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { System.out.println('————認(rèn)證————doGetAuthenticationInfo————'); UsernamePasswordToken userToken = (UsernamePasswordToken) token; // 連接數(shù)據(jù)庫(kù) 查詢(xún)用戶(hù)數(shù)據(jù) QueryWrapper<Administrators> wrapper = new QueryWrapper<>(); wrapper.eq('username', userToken.getUsername()); Administrators administrators = administratorsService.getOne(wrapper); if (administrators == null) { return null; // 拋出異常 UnknownAccountException } // 密碼認(rèn)證,shiro做 return new SimpleAuthenticationInfo('', administrators.getPassword(), ''); }}

控制層用戶(hù)密碼登錄

//用戶(hù)名登錄 @ApiOperation(value = '管理員登錄', notes = '用戶(hù)名登錄--不進(jìn)行攔截') @PostMapping('/doLogin') public String doLogin(@RequestParam('username') String username, @RequestParam('password') String password, HttpSession session,Model model) { // 獲取當(dāng)前的用戶(hù) Subject subject = SecurityUtils.getSubject(); // 封裝用戶(hù)的登錄數(shù)據(jù) UsernamePasswordToken token = new UsernamePasswordToken(username, password); try { subject.login(token); //保存session會(huì)話(huà) 管理員名字 session.setAttribute('adname', username); return 'admin'; } catch (UnknownAccountException e) { model.addAttribute('usererror', '用戶(hù)名錯(cuò)誤!請(qǐng)重新輸入。'); return 'login'; } catch (IncorrectCredentialsException ice) { model.addAttribute('pwerror', '密碼錯(cuò)誤!請(qǐng)重新輸入。'); return 'login'; } }

到此這篇關(guān)于SpringBoot 整合 Shiro 密碼登錄的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)SpringBoot 整合 Shiro 密碼登錄內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 快速门厂家批发_PVC快速卷帘门_高速门_高速卷帘门-广州万盛门业 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 外贸资讯网 - 洞悉全球贸易,把握市场先机 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 旋转滴界面张力仪(张力测定仪器)-百科| 北京京云律师事务所| 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 全自动面膜机_面膜折叠机价格_面膜灌装机定制_高速折棉机厂家-深圳市益豪科技有限公司 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 快速门厂家批发_PVC快速卷帘门_高速门_高速卷帘门-广州万盛门业 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 通用磨耗试验机-QUV耐候试验机|久宏实业百科 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 衬四氟_衬氟储罐_四氟储罐-无锡市氟瑞特防腐科技有限公司 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 厌氧反应器,IC厌氧反应器,厌氧三相分离器-山东创博环保科技有限公司 | LINK FASHION 童装·青少年装展| [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 杰恒蠕动泵-蠕动泵专业厂家-19年专注蠕动泵 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 球形钽粉_球形钨粉_纳米粉末_难熔金属粉末-广东银纳官网 | 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 |