shiro jsp标签使用

Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮。

导入标签库

Java代码  

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

标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义。

guest标签

Java代码  

  1. <shiro:guest>
  2. 欢迎游客访问,<a href="${pageContext.request.contextPath}/login.jsp">登录</a>
  3. </shiro:guest>

用户没有身份验证时显示相应信息,即游客访问信息。

user标签

Java代码  

  1. <shiro:user>
  2. 欢迎[<shiro:principal/>]登录,<a href="${pageContext.request.contextPath}/logout">退出</a>
  3. </shiro:user>

用户已经身份验证/记住我登录后显示相应的信息。

authenticated标签

Java代码  

  1. <shiro:authenticated>
  2. 用户[<shiro:principal/>]已身份验证通过
  3. </shiro:authenticated>

用户已经身份验证通过,即Subject.login登录成功,不是记住我登录的。

notAuthenticated标签

<span style="font-size:14px;"><shiro:notAuthenticated>    未身份验证(包括记住我)</shiro:notAuthenticated> </span>

用户已经身份验证通过,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证。

principal标签

<span style="font-size:14px;"><shiro: principal/></span>

显示用户身份信息,默认调用Subject.getPrincipal()获取,即Primary Principal。

Java代码

  1. <shiro:principal type="java.lang.String"/>

相当于Subject.getPrincipals().oneByType(String.class)。

Java代码

  1. <shiro:principal type="java.lang.String"/>

相当于Subject.getPrincipals().oneByType(String.class)。

Java代码

  1. <shiro:principal property="username"/>

相当于((User)Subject.getPrincipals()).getUsername()。

hasRole标签

Java代码

  1. <shiro:hasRole name="admin">
  2. 用户[<shiro:principal/>]拥有角色admin<br/>
  3. </shiro:hasRole>

如果当前Subject有角色将显示body体内容。

hasAnyRoles标签

Java代码

  1. <shiro:hasAnyRoles name="admin,user">
  2. 用户[<shiro:principal/>]拥有角色admin或user<br/>
  3. </shiro:hasAnyRoles>

如果当前Subject有任意一个角色(或的关系)将显示body体内容。

lacksRole标签

Java代码

  1. <shiro:lacksRole name="abc">
  2. 用户[<shiro:principal/>]没有角色abc<br/>
  3. </shiro:lacksRole>

如果当前Subject没有角色将显示body体内容。

hasPermission标签

Java代码

  1. <shiro:hasPermission name="user:create">
  2. 用户[<shiro:principal/>]拥有权限user:create<br/>
  3. </shiro:hasPermission>

如果当前Subject有权限将显示body体内容。

lacksPermission标签

Java代码

  1. <shiro:lacksPermission name="org:create">
  2. 用户[<shiro:principal/>]没有权限org:create<br/>
  3. </shiro:lacksPermission>

如果当前Subject没有权限将显示body体内容。

另外又提供了几个权限控制相关的标签:

导入自定义标签库

Java代码

  1. <%@taglib prefix="zhang" tagdir="/WEB-INF/tags" %>

示例

Java代码

  1. <zhang:hasAllRoles name="admin,user">
  2. 用户[<shiro:principal/>]拥有角色admin和user<br/>
  3. </zhang:hasAllRoles>
  4. <zhang:hasAllPermissions name="user:create,user:update">
  5. 用户[<shiro:principal/>]拥有权限user:create和user:update<br/>
  6. </zhang:hasAllPermissions>
  7. <zhang:hasAnyPermissions name="user:create,abc:update">
  8. 用户[<shiro:principal/>]拥有权限user:create或abc:update<br/>
  9. </zhang:hasAnyPermissions>

hasAllRoles表示拥有所有相关的角色;hasAllPermissions表示拥有所有相关的权限;hasAnyPermissions表示拥有任意一个相关的权限。(转)

时间: 2024-08-09 02:17:53

shiro jsp标签使用的相关文章

shiro jsp 标签

spring-shiro.xml 1 2 3 /admin/repairType/index = roles["ROLE_ADMIN"] /admin/user=roles["ROLE_ADMIN"] /admin/complaint/list= roles["ROLE_SERVICE,ROLE_ADMIN"] jsp页面: 1 2 3 4 5 6 7 8 9 <shiro:hasRole name="ROLE_ADMIN&quo

shiro中的&lt;shiro:principal /&gt;标签的使用

最近在看开涛老师讲的关于shiro的教程,看到JSP标签的时候,关于<shiro:principal property="username" />这种写法,是要把一个带有username属性的对象转换为Prinipal后保存在session中,才能在页面上正确显示结果的.由于开始学习,所以我用的是ini配置文件作为安全数据源的.在登录的方法中,调用了subject.login(token)后,还要手动利用principal和realmName构造SimpleAuthenti

自制权限框架(一)jsp标签

一.概述 在我们的系统中,很多时候都用到了权限.最简单的权限就是登录.登录了,我就可以自己的相关信息:没有登录,就不能看到. 目前比较流行的权限框架就是apache shiro和spring security,大家在选择时比较青睐apache shiro,因为spring security的拦截器过多,导致性能下降. 笔者在搭建系统时也是选择了Apache shiro.在权限框架中,最常用的两个地方是: 1.在controller层,使用@RequiresPermissions注解,标识这个链接

JSP的学习(8)——JSP标签

JSP标签也称为JSP Action(JSP动作)元素,用于在JSP页面中封装Java代码,这样使得在JSP页面中避免直接编写Java代码,让JSP真正成为MVC模式中的作为视图作用. 几个JSP常用标签: <jsp:include>标签 <jsp:forward>标签 <jsp:param>标签 <jsp:useBean>标签 <jsp:setProperty>标签 <jsp:getProperty>标签 下面对这几个标签进行详细说

Tip:JSP标签也称之为Jsp Action(JSP动作)元素

JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. ================ <jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入.语法: <jsp:include page="relativeURL | <%=expression%>" flush=&

自定义JSP标签示例

我们以一个例子来讲解如何自定义JSP标签,假如我们需要在页面中输出当前的时间,按照最简单的JSP脚本,需要在JSP里面写很多Java代码,那么如何来使用自定义标签实现这个功能呢? 首先,我们要先创建一个类,继承TagSupport类: 1 import java.io.IOException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 import javax.servlet.jsp.JspException;

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

一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 jsp的常用标签有以下三个 <jsp:include>标签 <jsp:forward>标签 <jsp:param>标签 2.1.<jsp:include>标签 <jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容

JSP标签

1.尽管我们希望JSP页面仅用作数据显示模块,不要嵌套不论什么java代码引入不论什么业务逻辑,但在实际开发中不引入一点业务逻辑是不可能的,但引入业务逻辑会导致页面出现难看java代码,该怎样解决? Sun公司同意用户开发自己定义标签封装页面的java代码.以便jsp页面不出现一行java代码. 当然Sun公司在jsp页面中也内置了一些标签(这些标签叫做jsp标签/动作),开发者使用这些标签能够完毕页面的一些经常使用业务逻辑.        JSP标签也称之为Jsp Action(JSP动作)元

笔记 - EL表达式 和 JSP标签

一.EL表达式 1 EL作用 jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<%  %>. 以后开发jsp的原则: 尽量在jsp页面中少写甚至不写java代码. 使用EL表达式替换掉jsp表达式                      EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!!                      语法: ${变量或表达式}          2 EL语法 1)输出基本数据类型变量 1.1 从四个域获取 ${name}