在页面上,如果要实现对某些文本、按钮等的控制,例如需要有什么角色或者权限才可以看见这个按钮,利用shiro自带的shiro标签能很容易就实现

一、引入shiro标签库

首先得在jsp页面的头部引入EL表达式,来引入shiro标签,以及在本页面中使用的标签前缀

<%@ taglib uri="http://shiro.apache.org/tags" prefix="shiro" %>

说明:<% @ taglib %>指令声明此JSP文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀,例如上面的是引入了shiro的标签库,指定了标签的前缀为:shiro(这个可以根据自己的命名喜好来命名)。

 注意:

 你必须在使用自定义标签之前使用<% @ taglib %>指令定义,而且你可以在一个页面中多次使用,但是前缀只能定义一次

二、shiro的标签

下图为shiro标签库中定义的方法:

接下来,让我为大家详细解析一下shiro标签的具体作用:

1.shiro:authenticated (表示已认证通过,但不包括remember me登录的)
<shiro:authenticated><label>用户身份验证已通过 </label>
</shiro:authenticated>

说明:只有已通过用户认证,但不是通过记住我(remember me)浏览才会看到标签内的内容

2.shiro:guest (表示是游客身份,没有登录)
<shiro:guest><label>您当前是游客,</label><a href="/login.jsp" >请登录</a>
</shiro:guest>

说明:只有是没有登录过,以游客的身份浏览才会看到标签内的内容

3.shiro:hasAnyRoles(表示拥有这些角色中其中一个)
<shiro:hasAnyRoles name="admin,user"><label>这是拥有admin或者是user角色的用户</label>
</shiro:hasAnyRoles>

说明:只有成功登录后,且具有admin或者user角色的用户才会看到标签内的内容;name属性中可以填写多个角色名称,以逗号(,)分隔

4.shiro:hasPermission(表示拥有某一权限)
<shiro:hasPermission name="admin:add"><label>这个用户拥有admin:add的权限</label>
</shiro:hasPermission>

说明:只有成功登录后,且具有admin:add权限的用户才可以看到标签内的内容,name属性中只能填写一个权限的名称

5.shiro:hashRole (表示拥有某一角色)
<shiro:hasRole name="admin"><label>这个用户拥有的角色是admin</label>
</shiro:hasRole>

说明:只有成功登录后,且具有admin角色的用户才可以看到标签内的内容,name属性中只能填写一个角色的名称

6.shiro:lacksPermission (表示不拥有某一角色)
<shiro:lacksPermission name="admin:delete"><label>这个用户不拥有admin:delete的权限</label>
</shiro:lacksPermission>

说明:只有成功登录后,且不具有admin:delete权限的用户才可以看到标签内的内容,name属性中只能填写一个权限的名称

7.shiro:lacksRole (表示不拥有某一角色)
<shiro:lacksRole name="admin"><label>这个用户不拥有admin的角色</label>
</shiro:lacksRole>

说明:只有成功登录后,且不具有admin角色的用户才可以看到标签内的内容,name属性中只能填写一个角色的名称

8.shiro:notAuthenticated (表示没有通过验证)
<shiro:notAuthenticated><label>用户身份验证没有通过(包括通过记住我(remember me)登录的) </label>
</shiro:notAuthenticated>

说明:只有没有通过验证的才可以看到标签内的内容,包括通过记住我(remember me)登录的

9.shiro:principal (表示用户的身份)

取值取的是你登录的时候,在Realm 实现类中的new SimpleAuthenticationInfo(第一个参数,....) 放的第一个参数:

....
return new SimpleAuthenticationInfo(user,user.getPswd(), getName());

1)如果第一个放的是username或者是一个值 ,那么就可以直接用。

<!--取到username-->
<shiro: principal/>

2)如果第一个参数放的是对象,比如放User 对象。那么如果要取其中某一个值,可以通过property属性来指定。

<!--需要指定property-->
<shiro:principal property="username"/>
10.shiro:user (表示已登录)
<shiro:user><label>欢迎[<shiro:principal/>],</label><a href="/logout.jsp">退出</a>
</shiro:user>

说明:只有已经登录(包含通过记住我(remember me)登录的)的用户才可以看到标签内的内容;一般和标签shiro:principal一起用,来做显示用户的名称

注意:

shiro的jsp标签可以嵌套使用,可以根据业务的具体场景进行使用。例如一个按钮需要排除不是admin或user角色的用户才可以显示,可以像如下这样实现:

<shiro:lacksRole name="admin"><shiro:lacksRole name="user"> <label>这个用户不拥有admin或user的角色</label></shiro:lacksRole>
</shiro:lacksRole>

shiro学习--jsp标签相关推荐

  1. ssm+shiro+jsp标签。关键字:shiro的jsp标签,访问拦截。本次ssm和以前的ssm整合中的依赖包不一样。写根据不同用户出现不同的按钮内容就用这shiro标签来解决。Set集合在sql中

    shiro标签只能在jsp和ftl页面文件中使用,无法在html文件中使用 shiro认证后的在jsp页面中的标签: 使用shiro标签就一定要搭配shiro框架使用,即一定要有自定义realm,因为 ...

  2. Shiro集成Web时的Shiro JSP标签

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 在上面已经实现整合 ...

  3. Shiro JSP 标签

    Shiro JSP 标签 由 北公爵无欢 创建, 最后一次修改 2016-08-12 21:19:51 JSP 标签 Shiro 提供了 JSTL 标签用于在 JSP/GSP 页面进行权限控制,如根据 ...

  4. Shiro教程(九)Shiro JSP标签的使用。

    Shiro  提供了 JSP  的一套 JSTL  标签,用于做 JSP  页面做权限控制的.可以控制一些按钮和一些超链接,或者一些显示内容. Freemarker Shiro标签讲解:https:/ ...

  5. ssm+shiro+freemarker。关键字:ftl。(作为了解即可,主要了解ssm+shiro+jsp标签这篇笔记)

    本案例和ssm+shiro+jsp标签这篇文章几乎没差别,差别主要在于spring.xml文件中controller跳转的前后缀的区别以及使用的页面的不同,这个案例页面是ftl,那个案例是jsp页面, ...

  6. javaweb学习总结(十九)——JSP标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  7. javaweb学习总结(十九):JSP标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  8. Java Web学习总结(18)——JSP标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  9. Shiro学习笔记_02:shiro的认证+shiro的授权

    Shiro 学习笔记 本文基于B站UP主[编程不良人]视频教程[2020最新版Shiro教程,整合SpringBoot项目实战教程]进行整理记录,仅用于个人学习交流使用. 视频链接:https://w ...

最新文章

  1. 智慧健康,协同发展:清华大学携手天津市共同探索健康医疗大数据
  2. 百年科技的历史回顾与哲学反思
  3. Spring MVC的优势
  4. 一个平行四边形可以分成四个_将平行四边形分割成两个三角形还易变形么?(人教四下五单元三角形例2)...
  5. LeetCode 100. 相同的树(二叉树遍历)
  6. html如何设置滚动条居中,css3内容垂直居中及垂直滚动条例子
  7. (八)java版spring cloud+spring boot+redis多租户社交电子商务平台 -SSO单点登录之OAuth2.0登录认证(2)...
  8. asp.net页面的生存周期
  9. Invisible Perturbations: Physical Adversarial Examples Exploiting the Rolling Shutter Effect 论文解读
  10. kafka与mysql持久化_漫游Kafka设计篇之数据持久化
  11. 如何使用SiteSucker下载HTML源文件?下载html源文件的两种方法
  12. 加工制造业经销商渠道管理系统:共享上下游信息,加速交易效率
  13. matlab化工实例,运用MATLAB软件处理化工实验数据
  14. 一个屌丝程序猿的人生(九十六)
  15. Supervised Descent Method(人脸对齐之SDM论文解析)
  16. Windows 镂空图标,“百变硬汉”
  17. Typora Syntax
  18. 全国24小时降水量pyecharts可视化分析
  19. C++高斯分布随机数的产生
  20. 研华运动控制卡接线图_ADVANTECH研华PCI-1245S运动控制卡4轴DSP架构脉冲型 步进/伺服电机SCARA控制通用PCI卡...

热门文章

  1. 星岚技术 Win10 x64 适度精简版 V2021.5
  2. 独立站运营 | 除了TIDIO,还有哪些WooCommerce聊天机器人推荐?
  3. golang网络编程:获取本机MAC地址
  4. 宏的优缺点宏的替代技术
  5. 【829】【02检索语言】【理解】
  6. 图像处理matlab基本操作
  7. java十六进制转十进制_java十六进制转十进制
  8. 关于电子资料和纸质资料的竞争
  9. h5响应式布局、PC和移动端适配方案
  10. 关于Java穷举法对24点卡牌游戏规定时间内输入判断对错的程序