1. 搭建Spring security 环境.
1) spring 项目: 导入Spring 的两个Jar包, 加入 Spring 的配置文件(注总加入 security 命名空间)
2) 加入 Spring security 的一个 Jar包
3) 在 web.xml 文件中加信相关配置
1> 搭建 spring 环境
web.xml
<!-- 搭建 spring 环境 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2> 加入 Spring security 框架的过滤器
web.xml
<!-- 加入 spring-security 框架的过滤器 -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3> 在Spring 的配置文件中配置 Spring security 的应用
applicationContext-security.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">
<!-- 配置 spring-security 的Http服务 -->
<http auto-config="true">
<!-- 哪些页面需要受到 spirng-sceurity 的保护, 以及访问这些页面的权限是什么 -->
<intercept-url pattern="/index.jsp" access="ROLE_ADMIN, ROLE_USER" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<!-- 配置登出 -->
<logout logout-url="/logoff" logout-success-url="/bye.jsp" invalidate-session="false" />
<!-- 配置登录 -->
<form-login login-page="/login.jsp" login-processing-url="/login" default-target-url="/index_1.jsp" always-use-default-target="true" />
</http>
<!-- 配置 spring-security 的权限信息 -->
<authentication-provider>
<!-- 配置security 的用户信息 -->
<user-service>
<user name="user" password="user" authorities="ROLE_USER" />
<user name="admin" password="admin" authorities="ROLE_ADMIN" />
</user-service>
</authentication-provider>
</beans:beans>
2. 用于测试的JSP页面
login.jsp 自定义的 登录界面
<html>
<head>
<title>Login Page</title>
</head>
<body onload='document.f.j_username.focus();'>
<h3>zhangq</h3>
<form name='f' action='login' method='POST'>
<table>
<tr><td>User:</td><td><input type='text' name='j_username' value=''></td></tr>
<tr><td>Password:</td><td><input type='password' name='j_password'/></td></tr>
<tr><td><input type='checkbox' name='_spring_security_remember_me'/></td>
<td>Remember me on this computer.</td></tr>
<tr><td colspan='2'><input name="submit" type="submit"/></td></tr>
<tr><td colspan='2'><input name="reset" type="reset"/></td></tr>
</table>
</form>
</body>
</html>
index-1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
index page. <br>
sessionid= <%=session.getId() %> <br>
<!-- 如果权限不是 ROLE_ADMIN, 则不显示 admin.sjp 链接-->
<security:authorize ifAllGranted="ROLE_ADMIN">
<a href="./admin.jsp"> admin.sjp</a> <br><br>
</security:authorize>
<a href="logoff" >logoff</a>
</body>
</html>
admin.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
index page <br><br>
<a href="./admin.jsp">admin.jsp</a> <br>
SessionId=<%=session.getId() %><br>
<a href="logoff" >logoff</a>
</body>
</html>
bay.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
bye page. <br>
SesionId=<%=session.getId() %><br>
sessionIsNew=<%=session.isNew() %><br>
<a href="login" >Login</a>
</body>
</html>
2. 关于 DelegatingFilterProxy:
1). 是一个 Filter
2). 将 HTTP 请求委托给 Spring 应用程序上下文中的一个 Bean, 默认情况下, DelegatingFilterProxy 会把 HTTP 请求委托给和它的 <filter-name> 属性相同的 Bean 上
3. 配置登出:
1). 通过 http 节点的 logout 子节点进行配置
2). 默认的 url 为: j_spring_security_logout, 可通过 logout-url 属性修改默认的 url
3). logout-success-url 属性配置成功登出重定向页面
4). invalidate-session 属性配置是否销毁 session
4. 配置登录:
1). 通过 http 节点的 form-login 子节点进行配置
2). login-page 属性配置指定的登录页面: 但是该表单页面不能随意的定义, 例如用户名, 密码. 而应使用 spring-security 的配置方式.
3). login-processing-url 属性配置处理登陆页面的 url
4). 若直接访问登录页面, 若登录成功, 则 spring-security 默认把页面重定向到 /index.jsp 页面. 若不存在该页面,或需要重定向到其他页面,
则需要配置 default-target-url 属性; 若访问受保护的页面, 则 spring-security 框架会把请求重定向到 login-page 属性指定的页面, 若登录成功
spring-security 会把请求再重新定向到刚才请求的受保护的那个页面
5). authentication-failure-url 配置登录失败的相应页面
6). 若 always-use-default-target="true" 则只要登录成功, spring-security 都会把请求重定向到 default-target-url 属性指定的页面
分享到:
相关推荐
基于springMVC+mybatis+mysql实现。基于SpringSecurity权限控制的简单工程DEMO。maven构建.
springboot springsecurity动态权限控制,实现数据库动态管理菜单权限
非常详细的Spring Security 权限控制中文API
一个学习Spring Security权限控制的demo,使用的IDE是idea。
SpringSecurity+OAuth2+JWT分布式权限控制
SpringBoot整合权限控制SpringSecurity
struts2 + spring3 + hibernate3 + spring security3 + mysql + tomcat sys_users;sys_roles;sys_authorities;sys_resources;sys_users_roles;sys_roles_authorities;sys_authorities_resources; PS:此项目运行不...
SpringSecurity权限管理
基于SpringSecurity+springMVC+mybatis+mysql实现。基于SpringSecurity权限控制的简单工程DEMO。maven构建,用户信息存储在mysq数据库中
Spring Security权限管理开发手册
本项目基于Spring,整合Spring的security模块,实现用户管理和权限控制,是一套较为通用的权限控制功能,主要内容如下: 1.登录,包括“记住我”的功能; 2.加密,存储的密码不采用明文,初始密码1234; 3.拦截器...
主要介绍了Spring Security如何使用URL地址进行权限控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.Spring Security权限控制 2.结合BCrypt加密 3.thymeleaf模板 4.小型mode,简单明了
基于spring mvc mybatis spring security 和jquery easy-ui的用户权限管理项目。
springsecurity角色和权限
后端使用SpringBoot框架进行业务逻辑开发,利用Spring Security实现权限控制。数据库采用MySQL进行数据存储,使用MyBatis进行数据访问。 权限控制模块设计包括用户、角色和权限三个主要模块。用户模块用于管理用户...
详情地主:https://blog.csdn.net/qq_38425662/article/details/82703128
SpringBoot+SpringSecurity+JWT+MybatisPlus实现基于注解的权限验证,可根据注解的格式不同,做到角色权限控制,角色加资源权限控制等,粒度比较细化。 @PreAuthorize("hasAnyRole('ADMIN','USER')"):具有admin或...
Spring Security安全权限管理手册.CHM