Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Spring Boot】017-Shiro整合Thymeleaf

【Spring Boot】017-Shiro整合Thymeleaf

作者头像
訾博ZiBo
发布于 2025-01-06 07:38:48
发布于 2025-01-06 07:38:48
11100
代码可运行
举报
运行总次数:0
代码可运行

最新更新:2020年9月22日08:14:22

一、Shiro整合Thymeleaf

1、导入坐标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        <!--整合Thymeleaf-->
        <dependency>
            <groupId>com.github.theborakompanioni</groupId>
            <artifactId>thymeleaf-extras-shiro</artifactId>
            <version>2.0.0</version>
        </dependency>

2、修改ShiroConfig类,添加shiro整合thymeleaf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.zibo.config;

import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
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;

import java.util.LinkedHashMap;

@Configuration
public class ShiroConfig {

    //1、创建Realm对象,需要自定义
    @Bean
    public AccountRealm accountRealm(){
        return new AccountRealm();
    }

    //2、DefaultWebSecurityManager
    @Bean(name = "securityManager")
    public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("accountRealm")AccountRealm accountRealm){
        DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
        //关联accountRealm
        manager.setRealm(accountRealm);
        return manager;
    }

    //3、ShiroFilterFactoryBean
    @Bean(name = "shiroFilterFactoryBean")
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManager manager){
        ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
        //设置安全管理器
        bean.setSecurityManager(manager);

        //添加shiro内置过滤器
        /*
         * anon:无需认证就可以访问;
         * authc:必须认证了才能访问;
         * user:必须拥有记住我功能才能访问(一般不用);
         * perms:拥有对某个资源的权限才能访问;
         * role:拥有某个角色权限才能访问;
         */

        LinkedHashMap<String, String> filterMap = new LinkedHashMap<>();


        //★★★授权:只有account:add权限的账户才能访问
        //注意:注意这是一个有序map,需要卸载拦截前面,否则不生效!!!
        filterMap.put("/account/add","perms[account:add]");

        //拦截:设置认证了才能访问
        filterMap.put("/account/*","authc");

        bean.setFilterChainDefinitionMap(filterMap);

        //设置登录页面
        bean.setLoginUrl("/toLogin");

        //设置未授权页面
        bean.setUnauthorizedUrl("/noauth");


        return bean;
    }


    //shiro整合thymeleaf
    @Bean
    public ShiroDialect getShiroDialect(){
        return new ShiroDialect();
    }

}

3、修改index.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"
      xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>首页</h1>
    <p th:text="${msg}"></p>

    <div shiro:hasPermission="account:add">
        <a th:href="@{/account/add}">add</a>
    </div>
    <a th:href="@{/account/update}">update</a>
    <a th:href="@{/logout}">注销</a>
</body>
</html>

4、测试结果

二、登录前后的显示与隐藏等

1、修改index.html页面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"
      xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>首页</h1>
    <p th:text="${msg}"></p>
    <!-- 判断当前用户是否已经认证,未认证就可以看到标签中的内容 -->
    <shiro:notAuthenticated>
        登录成功则隐藏
    </shiro:notAuthenticated>
    <br/>
    <!-- 判断当前用户是否已经认证,已认证就可以看到标签中的内容 -->
    <shiro:authenticated>
        登录成功则显示
    </shiro:authenticated>
    <br/>
    <!-- 判断当前用户是否拥有指定的权限 -->
    <shiro:hasPermission name="account:add">
        当前用户有account:add权限则显示
    </shiro:hasPermission>

    <br>

    <div shiro:hasPermission="account:add">
        <a th:href="@{/account/add}">add</a>
    </div>
    <a th:href="@{/account/update}">update</a>
    <a th:href="@{/logout}">注销</a>
</body>
</html>

2、测试结果

三、源代码

链接:https://pan.baidu.com/s/1UcX7tWIBZxJtt4ViGYC2mg 提取码:zibo 复制这段内容后打开百度网盘手机App,操作更方便哦

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
springboot整合shior初体验
​ Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
上分如喝水
2021/08/16
3410
springboot整合shior初体验
【Spring Boot】014-Shiro登录拦截和用户认证
/* * anon:无需认证就可以访问; * authc:必须认证了才能访问; * user:必须拥有记住我功能才能访问(一般不用); * perms:拥有对某个资源的权限才能访问; * role:拥有某个角色权限才能访问; */
訾博ZiBo
2025/01/06
1260
【Spring Boot】014-Shiro登录拦截和用户认证
06 Spring Boot 整合Shrio
整合Shrio 整合方法 导入依赖 <!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-core --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.5.3</version> </dependency> 创建UserRealm类,继承Authoriz
shimeath
2020/07/31
3590
超详细 Spring Boot 整合 Shiro 教程!
Apache Shiro 是一款 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是用来做身份认证、授权、会话管理和加密等操作。
南风
2020/06/11
28.3K1
超详细 Spring Boot 整合 Shiro 教程!
shiro安全框架从入门到精通实战!!!!
2、abstaract的mehtod能不能是static,同时是native, 同步的?
张哥编程
2024/12/13
1430
(八) SpringBoot起飞之路-整合Shiro详细教程(MyBatis、Thymeleaf)
姗姗来迟的第八篇,这一篇姑且认为 Springboot 的基础整合部分已经算结束了,或许还会写一些相关的,还有MySQL没有重新整理的,Linux相关的,以及我以前记录下来的一些坑,和常见错误,都会整理出来,因为太忙,更新会慢一些,感谢大家支持!
BWH_Steven
2020/07/15
1.1K0
(八) SpringBoot起飞之路-整合Shiro详细教程(MyBatis、Thymeleaf)
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环
刘大猫
2025/06/01
1160
shiro笔记(七)springboot 整合shiro框架,实现授权功能,Thymeleaf整合shiro和注解控制权限
之前有ini文件的时候,我们的授权是在ini文件里面书写的,现在权限是在数据库里面,那么就需要在realm里面自己写授权的代码了,因为要操作数据库
一写代码就开心
2021/08/10
7650
没时间直播,先来一波 Shiro 整合 Spring Boot 图文教程!
Apache Shiro 是一款 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是用来做身份认证、授权、会话管理和加密等操作。
南风
2020/07/09
5880
没时间直播,先来一波 Shiro 整合 Spring Boot 图文教程!
一篇文章理解Shiro
是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、 授权、会话管理、加密等操作。
GeekLiHua
2025/01/21
2000
一篇文章理解Shiro
springboot 整合 springSecurity 和shiro
SpringSecurity 安全简介 1、在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中。
kirin
2021/04/30
1.2K0
shiro整合springboot之thymeleaf权限控制
文章目录 7.Shiro整合springboot之thymeleaf权限控制 1.引入扩展依赖 2.页面中引入命名空间 3.常见权限控制标签使用 4.加入shiro的方言配置 源码下载:
别团等shy哥发育
2023/02/25
2980
shiro整合springboot之thymeleaf权限控制
安全框架Shiro和SpringSecurity的比较
首先Shiro较之 Spring Security,Shiro在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。
Java编程指南
2020/05/13
8880
Springboot整合shiro_spring boot框架介绍
Shiro是一款安全框架,主要的三个类Subject、SecurityManager、Realm
全栈程序员站长
2022/10/03
3470
Springboot整合shiro_spring boot框架介绍
深入理解Shiro
​ Apache Shiro(发音为“shee-roh”,日语中“城堡”的意思)是一个功能强大且易于使用的 Java 安全框架,可执行身份验证、授权、加密和会话管理,可用于保护任何应用程序 -从命令行应用程序、移动应用程序到最大的 Web 和企业应用程序。
用户11097514
2024/05/30
2670
深入理解Shiro
Springboot整合shiro框架
4. 编写前端页面 在templates目录下编写 login.html,add.html,delete.html,index.html 导入thymeleaf的dtd
JokerDJ
2023/11/27
3650
Springboot整合shiro框架
Spring Boot + Shiro整合
创建一个SpringBoot项目整合MyBatis,Thymeleaf,SpringMVC等并创建相关的配置文件和Service逻辑
Java鱼头
2022/12/01
3811
【Spring Boot】013-Spring Boot整合Shiro环境搭建
訾博ZiBo
2025/01/06
1550
【Spring Boot】013-Spring Boot整合Shiro环境搭建
Spring Boot 整合Shiro
Apache Shiro 是一个强大且易用的 Java 安全框架,执行身份验证、授权、密码和会话管理。使用 Shiro 的易于理解的 API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
LCyee
2020/08/05
1K0
Spring Boot 整合Shiro
【Spring Boot】016-Shiro请求授权实现
訾博ZiBo
2025/01/06
870
【Spring Boot】016-Shiro请求授权实现
相关推荐
springboot整合shior初体验
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档