spring-security安全认证服务框架搭建

  • Post author:
  • Post category:其他


Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。(

https://projects.spring.io/spring-security/

) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。人们使用Spring Security有很多种原因,不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。特别要指出的是他们不能再WAR 或 EAR 级别进行移植。这样,如果你更换服务器环境,就要,在新的目标环境进行大量的工作,对你的应用系统进行重新配置安全。使用Spring Security 解决了这些问题,也为你提供很多有用的,完全可以指定的其他安全特性。安全包括两个主要操作。

1.创建web项目

2.添加依赖

Spring Security依赖:spring-security-config、spring-security-web

(jar包:spring-security-crypto、spring-security-web、spring-security-config、spring-security-core)

Spring Security编译依赖需于Spring的依赖,因此需要添加Spring的相关依赖。(SpringMVC依赖中包含Spring的依赖,只添加SpringMVC的相关依即可)

Springweb依赖:spring-webmvc

JDBC数据库连接依赖:spring-jdbc(这里我用的是Spring自带的)

MyBatis依赖:

MyBatis-Spring依赖:(mybatis和spring的整合)(这个可以省略,后面mybatis需要单独配置)

mysql依赖:

2.编写配置文件

2.1spring-security.xml

添加security约束

        xmlns:security="http://www.springframework.org/schema/security"
        http://www.springframework.org/schema/security         http://www.springframework.org/schema/security/spring-security.xsd

配置自定义页面,并设置此页面不需要过滤(配置的页面任何人都可以访问,没有限制,一般为登录页面,注册页面,错误页面)。

security的核心配置


<security:http auto-config=”true” use-expressions=”false”>



auto-config: 这个是一个自动配置过滤器(Filter)的属性, 设置为true,security框架帮我创建login页面,login处理方法

use-expressions:”是否使用spring 的el表达式”,如果使用表达式true:access=”hasRole(‘ROLE_USER’)

配置拦截的请求地址(写在<security:http></security:http>内部)

pattern=/** 代表拦截所有请求 access=ROLE_USER,即访问的用户必须有ROLE_USER的角色才可访问 ROLE_USER写法,ROLE_自定义,须以ROLE_为前缀, 多个以逗号分割

<security:intercept-url pattern=”/**” access=”ROLE_USER”/>

===========================================================

登录相关配置(不写的话,会使用security默认的登录配置)

username-parameter: 登陆请求中发送过来的用户名称的参数名
password-parameter: 登陆请求中发送过来的密码的参数名
login-processing-url: 登陆请求处理的地址,由security处理,帮我们生成好了
login-page: 配置自定义登陆页面
default-target-url: 登陆成功后默认跳转页面
authentication-failure-url: 登陆失败后跳转的页面
always-use-default-target: 不管原来访问的是哪个页面,登陆成功后都跳转到default-target-url

<security:form-login login-page="/login.html"
                     login-processing-url="/login"
                     authentication-failure-url="/failer.html"
                     default-target-url="/success.html"
                     authentication-success-forward-url="/success.html"></security:form-login>

===========================================================

关闭跨域请求限制
<security:csrf disabled="true"/>

===========================================================

退出相关配置

logout-url: 退出请求的处理(servlet)
logout-success-url: 退出成功后跳转的页面
invalidate-session: 让session失效

<security:logout
        logout-url="/logout"
        logout-success-url="/login.html"
        invalidate-session="true"/>
</security:http>
 </security:http> 
配置授权信息
配置账号密码,以及该账号的角色信息
其中{noop}表示加密的类型,noop则表示不使用任何加密方式
authorities这个用户所拥有的角色 

2.2web.xml

tomcat启动时加载的配置文件
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-security.xml classpath:application.xml</param-value>
</context-param>

监听器

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>



拦截器

<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>

放行资源(不需要拦截的页面)

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

3.测试(spring-security默认登录页面)



版权声明:本文为m0_56162492原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。