首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Spring Boot】017-Shiro整合Thymeleaf

【Spring Boot】017-Shiro整合Thymeleaf

作者头像
訾博ZiBo
发布于 2025-01-06 07:38:48
发布于 2025-01-06 07:38:48
14000
代码可运行
举报
运行总次数: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
lefse分析本地实现方法带全部安装文件和所有细节,保证成功。
本人在win7-64和win10-64均完整安装使用,其他系统本人能力所限没安装成功。 lefse本地分析包。(https://download.csdn.net/download/weixin_43585681/11530367) 安装python2.7。(https://download.csdn.net/download/weixin_43585681/11530532) R语言3.6.1(https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/base/R-3.6.1-win.exe) 这个是我总结的安装需求
全栈程序员站长
2022/06/27
1.1K0
lefse分析本地实现方法带全部安装文件和所有细节,保证成功。
宏基因组数据分析:差异分析(LEfSe安装使用及LDA score计算)
报错:如果是r2py的问题,基本都是python版本的问题。 解决:虚拟环境中重新安装python2.7(推荐)。另一种方式是对虚拟环境中的conda降级,之后再进行安装。
全栈程序员站长
2022/09/05
4.5K0
宏基因组数据分析:差异分析(LEfSe安装使用及LDA score计算)
prophet快速开发教程
安装完Anaconda后配置清华镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes
lovelife110
2021/01/14
1.7K0
prophet快速开发教程
[Linux] 非root安装Lefse软件及其数据分析「建议收藏」
Lefse软件是宏组学物种研究常用软件,一般大家用在线版本即可。但要搭建在Linux集群环境中有点烦,记录一下折腾过程。
全栈程序员站长
2022/09/01
1.5K0
从黑暗走向光明:Python包安装进阶之路
想当初刚学习Python的时候,就会用书本里面自带的一些package,用sys,os也用得很开心。后来接触到biopython项目,发现原来Python有这么不同功能的包,简直琳琅满目。不过这也是我痛苦的开始,在服务器上装个包怎么那么费劲呢,缺这少那的。 为了一个包的安装,我得花多少时间啊,还能不能让人好好做科研了。 黑暗时代 最开始的时候是从源码开始安装,一般 python setup.py install就执行安装过程了,不过可怕的这些包之间的依赖关系。而且安装的时候,要选择安装目录。对于刚开始学习的
生信技能树
2018/03/08
1.4K0
从黑暗走向光明:Python包安装进阶之路
Python&R LEfSe 分析
 在涉及到物种或基因组间差异分析的方法中,LEfSe是目前常见的方法。LEfSe实现的方式主要有在线分析和本地分析,在线分析会受到网络及其他因素影响,因而速度可能极慢。本地分析可基于Windows或Linux系统,调参更加灵活。本文以Windows系统为例,向大家展示如何在自己的本本上运行LEfSe,再也不用去求公司了……  首先,我们要安装好Pyhthon(2.7版本)和R(安装方法不再赘述),然后把软件的安装路径添加到电脑的系统环境变量,如R我是安装在“D:\Rnew\R-3.4.4”,那么我复制这个路径,如下图:
全栈程序员站长
2022/08/11
1.8K1
Python&R LEfSe 分析
雷达系列:两种方法将气象雷达数据转为易处理的格式
由于可视化代码过长隐藏,可点击运行Fork查看 若没有成功加载可视化图,点击运行可以查看 ps:隐藏代码在【代码已被隐藏】所在行,点击所在行,可以看到该行的最右角,会出现个三角形,点击查看即可
用户11172986
2024/09/12
6340
雷达系列:两种方法将气象雷达数据转为易处理的格式
人脸动漫化——AnimeGAN快速上手
AnimeGAN是来自武汉大学和湖北工业大学的一项研究,采用的是神经风格迁移 + 生成对抗网络(GAN)的组合。
zstar
2022/06/14
1.7K0
人脸动漫化——AnimeGAN快速上手
解决lefse配置过程中遇到的问题「建议收藏」
1、下载lefse软件包,解压,查看 “requirements.txt” 文件,需要的R和python包列表:
全栈程序员站长
2022/08/27
6650
解决lefse配置过程中遇到的问题「建议收藏」
初探Anaconda——最省心的Python版本和第三方库管理
專 欄 ❈ 段晓晨,Python中文社区专栏作者。写过一点爬虫,写过几篇文章。能力虽有限,会尽量把想说的东西讲清楚。 知乎ID:段小草 知乎专栏:小段同学的杂记, https://zhuanlan.zhihu.com/666666❈—— 说起Python入门第一步,很多人会说是Hello World。殊不知挡在众多小白同学面前的一座大山便是安装Python。安装Python有什么难的,可要真从2.x和3.x之争说起,夹杂着诸如Windows下如何安装lxml库,如何管理Python 2.x和Python
Python中文社区
2018/01/31
3.3K0
初探Anaconda——最省心的Python版本和第三方库管理
python详细安装教程环境配置_Python配置环境
本教程为一个python入门教程,面向初学者,因此内容较为详细。主要内容为python环境配置教程,包括Anaconda,PyCharm,Jupyter notebook的安装与配置,及其常用技巧。教程以Windows系统为平台作演示,其他系统可能存在少许差异。
全栈程序员站长
2022/09/27
3.9K0
python详细安装教程环境配置_Python配置环境
Python基础(十二) | 还不会python绘图?两万字博文教你Matplotlib库(超详细总结)
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot
timerring
2022/10/08
2.6K0
Python基础(十二) | 还不会python绘图?两万字博文教你Matplotlib库(超详细总结)
基于geopandas的精美地图绘制:geoplot
由于可视化代码过长隐藏,可点击运行Fork查看 若没有成功加载可视化图,点击运行可以查看 ps:隐藏代码在【代码已被隐藏】所在行,点击所在行,可以看到该行的最右角,会出现个三角形,点击查看即可
用户11172986
2024/10/08
2500
基于geopandas的精美地图绘制:geoplot
『带你学AI』极简安装TensorFlow2.x的CPU与GPU版本教程
本篇文章就带领大家用最简单地方式安装TF2.0正式版本(CPU与GPU),由我来踩坑,方便大家体验正式版本的TF2.0。
小宋是呢
2022/01/21
3K0
『带你学AI』极简安装TensorFlow2.x的CPU与GPU版本教程
Matplotlib 1.4W+字基础教程来了(收藏吃灰去吧~~)
参考:Rougier N P, Droettboom M, Bourne P E, et al. Ten Simple Rules for Better Figures[J]. PLOS Computational Biology【IF 4.7】, 2014, 10(9).感兴趣戳:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4161295/pdf/pcbi.1003833.pdf
DataCharm
2021/02/22
1.6K0
Matplotlib 1.4W+字基础教程来了(收藏吃灰去吧~~)
Anaconda python安装使用
Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。
py3study
2020/01/08
1K0
Anaconda python安装使用
云服务器上运行python程序(PyCharm本地编辑同步服务器+Anaconda)挂载跑实验详细教程[通俗易懂]
背景:前段时间帮学长跑实验,在电脑上挂着得跑15个小时左右。白天跑,半夜跑,跑了5、6次,一次因为电脑死机,一次因为PyCharm闪退。跑了那么久全白费,想想就气。而且在本地跑实验十分占用CPU等资源,耗电又有风险。想着自己还有个服务器,这2天就捣鼓了下怎么在服务器上跑实验。总结下步骤,避免大家采坑。
全栈程序员站长
2022/09/12
9.7K0
云服务器上运行python程序(PyCharm本地编辑同步服务器+Anaconda)挂载跑实验详细教程[通俗易懂]
气象绘图——折线图
本节提要:不满意最开始那一版的折线图教程,所以进行了这一强化版的撰写。主要针对matplotlib中的折线图,对关键字指令升级梳理,希望能帮助新入门的小伙伴。
自学气象人
2023/06/21
6680
气象绘图——折线图
Python: matplotlib模块 源码阅读&理解
  因为想进一步了解该模块的使用,我开始阅读matplotlib模块对应的实现源码。matplotlib模块实现源码的位置在 ./anaconda2/lib/python2.7/site-packages/matplotlib/cm.py 。
JNingWei
2018/09/28
9980
再见pip & conda!管理Python依赖关系的更好的选择:Poetry
然而,随着项目的扩大,依赖关系的数量也在增加。这可能会使项目的环境难以重现,并且在仅仅依靠pip或conda进行依赖性管理时难以有效地维护它。
数据STUDIO
2023/09/04
3.4K0
再见pip & conda!管理Python依赖关系的更好的选择:Poetry
推荐阅读
相关推荐
lefse分析本地实现方法带全部安装文件和所有细节,保证成功。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验