Spring Security HelloWord

本文介绍如何使用 Spring Security 安全框架实现基于 Spring 的企业应用系统的声明式安全访问控制。通过 Maven Web App 项目搭建环境,并配置 Spring MVC 框架及 Spring Security 相关配置文件,最终实现页面访问权限控制。
摘要由CSDN通过智能技术生成


之前项目中权限管理都是通过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!




















  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值