SpringSecurity系列1:一个最基础的入门实例-创新互联

一 简介

Spring Security是为基于Spring的应用程序提供的一种声明式安全性框架。它提供了一套完整的安全性解决方案,能够在Web请求级别和方法调用级别处理身份认证和授权。

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站制作、柳北网络推广、成都微信小程序、柳北网络营销、柳北企业策划、柳北品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联建站为所有大学生创业者提供柳北建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

Spring Security可以从两个方面来解决安全性问题:

  1. 使用Servlet规范中的Filter保护Web请求并限制URL级别的访问

  2. 使用Spring AOP保护方法调用——借助于对象代理和使用通知,能够确保只有具备适当权限的用户才能方法安全保护的方法

下面我将简单介绍Spring Security的最基础的入门实例

二 Spring Security入门实例

(1)新建基于Spring MVC的Java Web项目:

导入Spring Security以及一些其他的spring相关的包之后,项目结构如下所示:

Spring Security系列1:一个最基础的入门实例

在这个测试项目中不需要再另写Java文件,同时也不涉及到数据库操作,实际上涉及到的文件只有:index.jsp、web.xml以及springmvc-servlet.xml文件

(2)web.xml:



	
		springmvc
		org.springframework.web.servlet.DispatcherServlet
		1
	

	
		springmvc
		*.html
	

	
		characterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			UTF-8
		
	
	
		characterEncodingFilter
		/*
	
	
	
		springSecurityFilterChain
		org.springframework.web.filter.DelegatingFilterProxy
	

	
		springSecurityFilterChain
		/*
	

	
		index.html
		index.htm
		index.jsp
		default.html
		default.htm
		default.jsp
	

在这个web.xml中,除了定义的一些常规的Spring项目的配置之外,在文件的第30-38行定义了一个名为“springSecurityFilterChain”的filter,这个filter定义之后spring security保护web请求这个作用就开始生效了,spring security将会对请求的url进行拦截并判断其权限

(3)springmvc-servlet.xml:




	
		
		
	

	
		
	

	

	
		
	

	

	  
	

	
		
		
	

在这个配置文件中,实际上34行及之后的那些配置都是跟SpringMVC相关的,而之前的那些配置则是在定义spring security的权限校验规则。

在第29-32行的配置中,“http”定义了一个Web相关的权限配置,同时“intercept-url”标签则配置了权限控制规则,即:网站根目录下的所有目录都需要有“ROLE_USER”的权限才允许访问。这将导致我们在访问首页的index.jsp文件都需要进行权限验证,也就是说程序运行之后就需要登录验证,验证通过之后才能访问首页及其他页面。当然,这个登录页面是spring security默认自带的,我在后面的文章中再说如何进行自定义这个登录页面

既然spring security需要验证访客的身份,那么就需要我们提供哪些用户具有哪些访问权限,也就是第22-25行配置的“authentication-manager”了,当然真正进行身份验证的是“authentication-provider”这个元素,从上面代码可以看出这里只是简单引用了一个采用硬编码的“user-service”,其里面定义了两个角色以及它们所对应的权限。

注:真正生产环境中,用户及其对应的权限这些信息是需要从数据库中读取的,这里为了理解方便就这样硬编码了

(4)index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>




	">
	Spring Security Demo


	
		Hello Spring Security!
	

(5)运行测试:

运行项目之后,我们可以发现并没有直接出现首页,而是强制转到了一个默认的登录页面:

Spring Security系列1:一个最基础的入门实例

然后输入上面定义的两组用户认证的其中一个,比如:admin/admin,然后就可以跳转到正常的首页中去了:

Spring Security系列1:一个最基础的入门实例

至此,这个最基本的spring security入门实例到此就结束了。不过我将在后面的文章中进一步说明spring security的其他用法

参考文章:

  • http://haohaoxuexi.iteye.com/blog/2154299

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


网站名称:SpringSecurity系列1:一个最基础的入门实例-创新互联
文章起源:http://scyanting.com/article/deipii.html

其他资讯