之前项目中权限管理都是通过Spring的拦截器,在拦截器中自定义访问页面的权限,今天尝试用一下 Spring Security 的安全框架
一. 简介 :
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
二. 配置步骤
a) 建立Mavin WebApp 项目 ,配置pom.xml文件
4.0.0
com.springsecuritydemo
SpringSecurityDemo
1.0.0
war
1.0.0
4.0.8.RELEASE
3.2.3.RELEASE
1.2
org.springframework
spring-core
${org.springframework.version}
org.springframework
spring-aspects
${org.springframework.version}
org.springframework
spring-expression
${org.springframework.version}
org.springframework
spring-beans
${org.springframework.version}
org.springframework
spring-aop
${org.springframework.version}
org.springframework
spring-context
${org.springframework.version}
org.springframework
spring-context-support
${org.springframework.version}
org.springframework
spring-tx
${org.springframework.version}
org.springframework
spring-jdbc
${org.springframework.version}
org.springframework
spring-oxm
${org.springframework.version}
org.springframework
spring-web
${org.springframework.version}
org.springframework
spring-webmvc
${org.springframework.version}
org.springframework
spring-webmvc-portlet
${org.springframework.version}
org.springframework
spring-test
${org.springframework.version}
test
org.aspectj
aspectjweaver
1.7.0
aopalliance
aopalliance
1.0
cglib
cglib-nodep
2.2.2
org.mybatis
mybatis-spring
1.1.1
org.mybatis
mybatis
3.1.1
mysql
mysql-connector-java
5.1.21
log4j
log4j
1.2.14
commons-dbcp
commons-dbcp
1.4
commons-pool
commons-pool
1.4
commons-logging
commons-logging-api
1.1
commons-io
commons-io
1.3.2
net.sf.json-lib
json-lib
jdk15
2.4
commons-beanutils
commons-beanutils
1.8.3
commons-collections
commons-collections
3.2.1
commons-lang
commons-lang
2.6
net.sf.ezmorph
ezmorph
1.0.5
junit
junit
4.10
test
javax.servlet
servlet-api
2.5
org.springframework.security
spring-security-web
${spring.security.version}
org.springframework.security
spring-security-config
${spring.security.version}
jstl
jstl
${jstl.version}
org.apache.maven.plugins
maven-compiler-plugin
1.7
1.7
2.3.2
org.apache.maven.plugins
maven-surefire-plugin
true
2.18
项目目录
b) 配置 SpringMVC 框架
web.xml 文件配置
spring-config.xml
spring-servlet.xml
log4j.xml
spring-security.xml 例子的主要配置文件
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
web.xml
webAppRootKey
webapp.root2
contextConfigLocation
classpath:spring-config.xml
log4jConfigLocation
classpath:/log4j.xml
log4jRefreshInterval
60000
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.Log4jConfigListener
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*
spring
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-servlet.xml
1
spring
/
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
403
/403.htm
404
/404.htm
500
/500.htm
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
spring-config.xml
spring-servlet.xml
log4j.xml
spring-security.xml
c) HelloController 控制层代码
package com.gavin.test.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloWorldController {
@RequestMapping(value = { "/", "/welcome" }, method = RequestMethod.GET)
public ModelAndView welcome() {
ModelAndView model = new ModelAndView();
model.addObject("title", "Welcome - Spring Security Hello World");
model.addObject("message", "This is welcome page!");
model.setViewName("hello");
return model;
}
@RequestMapping(value = "/admin", method = RequestMethod.GET)
public ModelAndView admin() {
ModelAndView model = new ModelAndView();
model.addObject("title", "Admin - Spring Security Hello World");
model.addObject("message", "This is protected page!");
model.setViewName("admin");
return model;
}
}
b) 发布到TOMCAT 中 ,注意端口号
http://localhost/SpringSecurityDemo/welcome 这个地址为没有权限限制
http://localhost/SpringSecurityDemo/admin 这个地址是有权限限制的 ,访问时会默认跳转到 http://localhost/SpringSecurityDemo/spring_security_login
这个登录地址是spring security 自带的一个登录地址,可以在配置文件中修改成我们自己的登录地址
这个是一个非常简单的例子可以快速的入门,源码下载地址 https://github.com/zhijun0808/SpringSecurityDemo/
GL!