1. 今日内容
文章目录
2. spring-security概述
1. 为什么学习spring-security?
* spring-security框架是一套专门针对于权限处理的一套解决方案,比如登入操作,不同的用户有不同的权限。当然这个登入操作我们使用拦截器或
者过滤器也可以实现,并在这样更加的轻量级。但是,在实际的开发过程中,针对于权限的操作不止限于登入操作,还有一系列其他的操作,比
如记住密码,session管理等等。而这些,spring-security都已经帮我们生成了相应的工具,我们进行配置和调用就可以使用。
2. spring-security介绍
* Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别 是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。人们使用
Spring Security有很多种原因,不过通常吸 引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 特别要指出的是
他们不能再 WAR 或 EAR 级别进行移植。这样,如果你更换服务器环境,就要,在新的目标环境进行大量的工作,对你的应用 系统进行重新配
置安全。使用Spring Security 解决了这些问题,也为你提供很多有用的,完全可以指定的其他安 全特性。 安全包括两个主要操作。
1. “认证”,是为用户建立一个他所声明的主体。主题一般式指用户,设备或可以在你系统中执行动作的其他系统。
2. “授权”指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,身份的主题已经由 身份验证 过程建立了。
3. Spring Security 目前支持认证一体化如下认证技术
1. HTTP BASIC authentication headers (一个基于IEFT RFC 的 标准)
2. HTTP Digest authentication headers (一个基于IEFT RFC 的标准)
3. HTTP X.509 client certificate exchange (一个基于IEFT RFC 的标准)
4. LDAP (一个非常常见的跨平台认证需要做法,特别是在大环境)
5. Form-based authentication (提供简单用户接口的需求)
6. OpenID authentication Computer Associates Siteminder JA-SIG Central Authentication Service (CAS,这是一个流行的开源单点登录系统)
7. Transparent authentication context propagation for Remote Method Invocation and HttpInvoker (一个Spring远程调用协议)
2. spring-security入门案例
2.1 在pom.xml文件中导入依赖
<spring.security.version>5.0.1.RELEASE</spring.security.version>
<!-- spring-security的jar包 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.security.version}</version>
</dependency>
2.2 创建 spring-security.xml配置文件并配置
在resources目录
下建立spring-security.xml
,并配置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.xsd">
<!--
1. auto-config="true" 是自动配置,能够启动帮我们生成一个登入验证的页面
2. use-expressions="false" 不使用 hasRole('ROLE_USER') 表达,
如果不写,默认为true,则需要写<security:intercept-url pattern="/**" access="hasRole('ROLE_USER')"/>
否则会报错
3. intercept-url定义一个过滤规则 pattern表示对哪些url进行权限控制。/** 表示对所有url
4. ccess属性表示在请求对应 的URL时需要什么权限,里面必须以ROLE_开头。即ROLE_XXX
如果有多个权限用逗号隔开 "ROLE_USER,ROLE_ADMIN"
-->
<security:http auto-config="true" use-expressions="false">
<security:intercept-url pattern="/**" access="ROLE_USER"/>
</security:http>
<!-- 构造用户。实际开发过程中不配置一下代码,是从数据库中读取用户,但是此代码对整合测试阶段非常有用 -->
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<!-- 密码前面需要带{noop},不然不能识别密码 -->
<security:user name="zhangsan" password="{noop}123" authorities="ROLE_USER"></security:user>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
注意:
- 设置 use-expressions=“false”
- ccess属性表示在请求对应 的URL时需要什么权限,里面必须以ROLE_开头。即ROLE_XXX
- 密码前面需要带{noop},不然不能识别密码
- 实际开发过程中,不会构造用户,用户是从数据库中读取的。
- 当指定http元素的auto-config=”true”时,就相当于如下内容的简写:
<security:http> <security:form-login/> <security:http-basic/> <security:logout/> </security:http>
这些元素负责建立表单登录、基本的认证和登出处理。它们都可以通过指定对应的属性来改变它们的行为。
2.3 在 web.xml文件中加载spring-security.xml文件
<!-- 配置加载类路径的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml,classpath:spring-security.xml</param-value>
</context-param>
<!-- 配置Spring的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
注意:classpath:applicationContext是spring的配置文件,如果你不是spring项目,可以只写
<param-value>classpath:spring-security.xml</param-value>
<!-- 配置哪些请求交给springSecurity处理,是第一个filter,在springmvc的filter之前 -->
<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>
2.4 检测spring-security是否配置成功
启动项目,访问项目http://localhost/springSecurity/
:
输入一个错误的用户:
输入正确的用户后,就允许的跳到指定的index.jsp页面了, 因为http://localhost/springSecurity/
访问的是index.jsp页面:
如果能够出现上面三种情况,则入门成功!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84643.html