上篇提到了,将用户,角色,组,权限存放到数据库中,会遇到UI上spring security 标签失效问题,建议自己定义自定义标签,下面就自定义标签,具体说一下思路;
spring security 登陆时将用户信息存放于session中,在自定义标签中通过pageContext 获取session相关信息,通过相应传人的URL,进行相应的比对就可以判断某些URL是否有访问权限,进而控制是否显示。
下面是一个简单的自定义标签的例子,如果URL为空,则不显示超链接,否则就显示,在现实中这个判断可以和spring security 结合使用:
tag的java类
/**
*
*/
package org.springsecurity.tag;
import javax.servlet.jsp.tagext.BodyTagSupport;
/**
* @author jgao1
*
*/
public class AuthorizeTag extends BodyTagSupport {
private static final long serialVersionUID = 1L;
private String URL;
public String getURL() {
return URL;
}
public void setURL(String uRL) {
URL = uRL;
}
@Override
public int doStartTag() {
// 如果URL不空就显示URL,否则就不显
if (null != URL && !"".equals(URL)) {
return EVAL_BODY_INCLUDE;
}
return this.SKIP_BODY;
}
}
authorize.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<description>
<![CDATA[security Tags]]>
</description>
<tlib-version>1.0</tlib-version>
<short-name>security</short-name>
<uri>http://www.springsecurity.org/jsp</uri>
<tag>
<description>
<![CDATA[authorize Tag]]>
</description>
<name>authorize</name>
<tag-class>
org.springsecurity.tag.AuthorizeTag
</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>URL</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>http://www.springsecurity.org/jsp</taglib-uri>
<taglib-location>/WEB-INF/authorize.tld</taglib-location>
</taglib>
</web-app>
index,jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security"%>
<body>
<security:authorize URL="qqq">
<a href="admin.jsp">进入admin页面</a>
</security:authorize>
<security:authorize URL="">
<a href="admin.jsp">进入admin页面</a>
</security:authorize>
</body>
通过测试会发现,
第一个标签显示,第二个标签不显示,目的已达到,另外,自定义标签教程,方便以后查询
分享到:
相关推荐
在本文中,我们将探讨如何在SpringBoot项目中整合SpringSecurity实现权限控制,并结合前端Element UI的多标签页(Tabs)组件,提供更加高效的用户体验。SpringBoot是一个流行的Java开发框架,它简化了Spring应用的...
5.5. Spring Security中的访问控制(验证) 5.5.1. 安全和AOP建议 5.5.2. 安全对象和AbstractSecurityInterceptor 5.5.2.1. 配置属性是什么? 5.5.2.2. RunAsManager 5.5.2.3. AfterInvocationManager 5.5.2.4...
在【描述】中提到的“V2.0.0中实现了使用spring security”,意味着这个系统已经集成了Spring Security,这是一个强大的、高度可定制的身份验证和授权框架。Spring Security为Web应用和企业应用提供了全面的安全服务...
【描述】:“在V2.0.0版本中,该系统实现了使用Spring Security进行权限控制和登录认证检验。” Spring Security是一个强大的安全框架,它可以提供身份验证、授权、会话管理等功能,保护应用程序免受攻击。在V2.0.0...
- Vue.js通过`<script>`标签引入,并在HTML模板中使用`v-bind`、`v-if`等指令进行数据绑定和逻辑控制。 - `vue-router`库用于管理页面路由,`axios`库负责前后端通信,发送HTTP请求。 5. **项目结构**: - `...
5. **安全性**:考虑到企业级应用的安全需求,系统可能集成了Spring Security或Apache Shiro等安全框架,提供身份验证、授权和会话管理等功能,防止未授权访问和攻击。 6. **响应式设计**:为了适应不同设备的浏览...
开发者可以使用JSP标签库(Tag Libraries)和自定义标签来简化页面开发,如JSTL(JavaServer Pages Standard Tag Library)。 2. **数据库集成**:新闻系统必然涉及到大量的数据存储,如新闻标题、内容、作者、发布...
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <title>Hello World! <h1 th:inline="text">Hello...
此外,Spring Security或Apache Shiro这样的权限管理库可能会被用于实现用户认证和授权功能,这些库提供了强大的权限控制API,能够方便地进行权限策略的设置和管理。 在实际应用中,权限系统需要与身份验证系统(如...
- **用户权限管理**: 提供角色、用户、权限的管理,实现不同用户访问不同内容的功能,这部分可能涉及到Spring Security或自定义的安全机制。 - **模板引擎**: JEECMS使用模板引擎如FreeMarker或Velocity,使开发者...
- **分类与标签**:系统可能支持自定义分类和标签,方便对内容进行组织和检索。 - **权限控制**:不同的用户角色有不同的操作权限,比如编辑、审核和发布内容。 - **模板引擎**:通过模板引擎,MRCMS可以动态生成...
"java 软件/插件",这里的标签表明了软件是用Java语言编写,且可能涉及到一些与Java相关的插件或库,如Spring框架用于依赖注入和AOP,MyBatis或Hibernate作为持久层框架,以及可能使用的安全框架如Spring Security。...
6. **安全性**:Jeebbs可能集成了Spring Security或Apache Shiro等安全框架,以实现用户认证和授权。 7. **缓存机制**:为了提高性能,Jeebbs可能使用了EhCache或Redis进行数据缓存。 8. **单元测试与集成测试**:...
Spring Security用于权限控制,确保系统安全。 3. **模板引擎**:byCMS内置了自定义的模板引擎,允许开发者使用简单的语法编写动态网页,提高开发效率。 4. **数据库设计**:采用ORM(Object-Relational Mapping)...
这部分可能会用到Spring Security或者自定义的安全框架来实现。 4. **模板引擎**:为了方便用户定制网站外观,CMS通常会包含模板引擎,如FreeMarker或Velocity,允许开发者使用模板语言编写可复用的页面布局。 5. ...
【标题】"eSHOP网上书店 V0.2(会员登录模块)"是一个基于Web的电子商务应用,主要关注的是用户身份验证和授权的部分。这个项目可能是为一个在线书店设计的,允许用户注册、登录并进行图书购买等操作。会员登录模块...
**renren-security-v4.0.1**这个压缩包名称可能表示这是一个名为"renren-security"的项目的第4.0.1版本。"security"可能意味着该项目专注于安全性,可能提供一套完整的安全解决方案,包括认证、授权和安全审计。这个...
Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它被广泛应用于各种规模的项目,从简单的静态文件服务到复杂的Web应用程序。标题"jetty2016/10最新jar"指的是2016年10月发布的Jetty版本的JAR文件,这通常...