`

第九章 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标签

<shiro:notAuthenticated>
    未身份验证(包括记住我)
</shiro:notAuthenticated> 

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

 

principal标签 

<shiro: principal/>

显示用户身份信息,默认调用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表示拥有任意一个相关的权限。

 

分享到:
评论

相关推荐

    Shiro学习教程源代码

    第九章 JSP标签 第十章 会话管理 第十一章 缓存机制 第十二章 与Spring集成 第十三章 RememberMe 第十四章 SSL 第十五章 单点登录 第十六章 综合实例 第十七章 OAuth2集成 第十八章 并发登录人数控制 第十九章 动态...

    关于Shiro安全框架的详细教程

    #### 第九章 JSP标签 - **Shiro JSP标签**: 提供了一系列用于简化安全逻辑处理的JSP标签。 #### 第十章 会话管理 **会话** - **Session**: 会话对象,用于存储用户的会话信息。 **会话管理器** - **Session...

    shiro用户教程pdf

    ### 第九章:JSP标签 Shiro提供了一系列JSP标签,用于在Web应用中执行安全相关的操作,如显示登录链接、隐藏未授权内容等。 ### 第十章:会话管理 #### 10.1 会话 会话是Web应用中用于跟踪用户状态的一种机制。...

    跟我学shiro

    #### 九、JSP 标签 - **概念**:Shiro 提供了一系列 JSP 标签,用于页面上的安全控制。 #### 十、会话管理 - **概念**:管理用户的会话信息,包括会话的创建、销毁、存储等。 - **组件**: - **会话**:存储用户...

    Shiro教程-孙开涛

    - Shiro提供了一系列JSP标签,用于在JSP页面中进行权限检查或其他安全相关的操作。 #### 十、会话管理 - **会话**:会话管理是Shiro的重要功能之一,它帮助跟踪用户的状态。 - **会话管理器**:SessionManager负责...

    Shiro开发文档

    - **实现**:通过 Shiro 提供的 JSP 标签库进行页面元素的显示和隐藏。 #### 十、会话管理 - **概念**:对用户的会话进行管理,包括会话的创建、维护和销毁。 - **实现**: - **Session**:表示用户的会话。 - *...

    [影音娱乐]泉城JSP播客系统_video.zip

    JSP文件包含静态内容(HTML、CSS、JavaScript)和动态内容(Java代码片段或JSP标签)。 **2. JSP生命周期** JSP在服务器上经历三个主要阶段:翻译、编译和执行。翻译阶段,JSP文件被转换为一个JavaServlet源代码;...

    JSP-网上书店+JAVA

    开发者可以通过JSP标签库(Tag Libraries)和脚本元素来实现页面逻辑,例如根据用户登录状态显示不同内容,或者根据查询参数显示特定的图书列表。 2. **Servlet**:Servlet是Java中用于处理HTTP请求的服务器端组件...

    jsp企业快信系统_毕设百日练.zip

    JSP的核心概念包括JSP指令(如page、include、taglib)、脚本元素(声明、脚本let、表达式)、以及JSP标签(自定义标签)。在企业快信系统中,JSP可能会用于创建用户界面,处理表单提交,以及与服务器端的JavaBeans...

    JSP 权限管理系统

    5. **标签库(Tag Libraries)**:JSP提供了一系列预定义的标签库,如JSTL(JavaServer Pages Standard Tag Library),可以帮助开发者更方便地处理权限控制,例如`&lt;c:if&gt;`和`&lt;sec:authorize&gt;`标签用于根据用户权限...

    全球商务B2B网站系统JSP源码版.rar

    在JSP中,JSP页面通常作为视图,Servlet或自定义标签库作为控制器,而业务逻辑和数据访问在模型中实现。 4. **数据库连接**:B2B系统需要存储大量产品信息、用户数据、订单记录等,因此数据库管理是核心部分。JDBC...

    JSP源码——[整站程序]EasyJF官网全站源码_easyjfcom_src.zip

    4. **标签库**:源码可能包含了自定义的JSP标签库(Tag Libraries),如EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library),它们提供了简化JSP页面的表达式和控制流程的功能。 5. **...

    (jsp+javaBean)网上商店源码

    它通过声明式和脚本元素实现动态内容生成,比如使用`&lt;jsp:include&gt;`、`&lt;jsp:useBean&gt;`、`&lt;jsp:setProperty&gt;`等动作标签。 2. **JavaBean规范**:JavaBean是一种符合特定规范的Java类,通常用于封装数据和业务逻辑。...

    课题设计——佳美网络购物中心(JSP)

    JSP页面由HTML或XML标签和嵌入的Java代码组成,这些Java代码可以处理用户的请求并生成响应。 2. **前端设计**:在"佳美网络购物中心"中,前端设计涉及到UI/UX设计原则,包括商品展示、购物车、结算流程等页面的布局...

    JSP基于SSM网上相片冲印系统可升级SpringBoot源码案例设计.zip

    9. **安全**:可能涉及Spring Security或Shiro进行用户认证和授权。 10. **文件上传**:了解如何处理用户上传的照片,包括文件大小限制、格式检查、存储策略等。 11. **支付集成**:如果系统支持在线支付,可能会...

    [上传下载]北雨下载系统 v1.0.1_bydown101.zip

    开发者可以使用JSP标签库(Tag Libraries)来实现复用和模块化,比如JSTL(JavaServer Pages Standard Tag Library)和EL(Expression Language)用于简化页面表达式。 2. 文件上传:北雨下载系统提供了文件上传...

    99.zip

    "99.zip" 文件是一个包含商城管理系统的压缩包,它主要使用了JSP(Java Server Pages)技术。JSP是Java平台上的一个用于构建动态网站的技术,它允许开发者将静态HTML内容与动态Java代码结合起来,使得网页内容可以...

    JavaWeb学习总结共9页.pdf.zip

    再者,JSTL(JavaServer Pages Standard Tag Library)是标准标签库,提供了许多预定义的标签,可以替代JSP中的脚本元素,使代码更加清晰,符合MVC设计模式。同时,理解JSP和Servlet如何与模型对象交互,例如通过...

    基于springboot的在线课程管理系统源码数据库.zip

    4. **jsp技术**:JSP(JavaServer Pages)用于生成动态网页,它将HTML、CSS、JavaScript与Java代码混合编写,通过JSP标签和脚本元素来实现动态内容的展现。在本系统中,jsp主要负责视图渲染,为用户提供交互式的界面...

    java权限管理系统

    开发者使用JSP标签、脚本元素和表达式语言来构建视图层,处理用户界面的展示和交互。 6. **开发环境**:MyEclipse是基于Eclipse的一个集成开发环境,特别适合Java EE项目的开发。它提供了丰富的特性,如代码提示、...

Global site tag (gtag.js) - Google Analytics