SpringSecurity框架登陆模块案例以及出现的重定向和403报错问题解决方式

为什么要实现安全登陆模块?

正常情况下,我们在系统的登陆页面要进行用户名和密码的验证,这个时候输入了正常的用户名和密码之后将会进入系统,但是实际上这种也是不安全的,不输入用户名和密码(不通过登陆)直接在浏览器中输入页面的路径也会进入系统,因此要控制这种不进行登陆就进入系统的情况,因此要在进入页面的时候判断用户是否是登陆,如果每一个页面都要判断,很不方便,通过springSecurity可以在系统中指定很多角色,管理员,高级管理员。。。等等,每一个角色有自己的访问权限。
springSecurity框架应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

1.首先创建一个maven project ,类型为war
SpringSecurity框架登陆模块案例以及出现的重定向和403报错问题解决方式_第1张图片

2.添加maven依赖,两部分依赖,一部分是spring的依赖,一部分是springSecurity的,其中还有一个servlet 依赖和maven的依赖

3.pom文件中添加完依赖之后,因为是web文件,因此要在webapp中创建WEB-INF文件夹,在WEB-INF文件中创建web.xml文件

web.xml中的有监听和过滤器,其中过滤器的类是一个代理类是由springweb提供的,则个过滤器代理类会自动找到springSecurityFilterChain类,这个类是springSecurity提供的,配置的过滤器就是安全控制的入口,让所有的请求都通过这个过滤器,之后就能对虽有的请求进行安全控制

SpringSecurity框架登陆模块案例以及出现的重定向和403报错问题解决方式_第2张图片
4.创建监听中的配置文件,放置到合适的目录上

sercurity.xml文件中用于配置页面的拦截规则,intercept-url表示配置的拦截规则,pattern表示可以访问的资源,access表示角色名称,必须要ROLE_开头,当前用户必须有ROLE_USER的角色,才可以访问根目录以及子目录的资源(采用access=ROLE_角色的形式必须要在http
中使用use-expressions=false,表示是否启用SPEL表达式),form-login表示开启表单功能。配置了认证管理器,在认证管理器中配置当前系统的用户,给当前系统的用户指定角色,当前系统可以有多个用户也可以有多个角色,如果使用当前用户进行登陆,登陆成功就具有指定的角色

5.在web-app文件夹中创建一个index.html,用于验证使用springSecurity框架之后配置的用户登陆系统是否能够访问到index.html页面
6.测试认证

没有通过系统配置的用户登陆系统,不能访问一些界面,登陆系统之后可以访问指定权限的页面

为什么会出现重定向问题?

我们在web-app文件夹中创建了login.html.index.html,login_error.html三个页面,进行配置默认访问login.html,访问成功之后进入index.html,访问失败进入login_error.html,出现了重定向问题
解决重定向问题的方法:

设置页面不登陆也能进行访问.访问页面的时候出现了403保存,显示CSRF拦截,没有token头信息,因为springSecurity自己的页面上有标识可以防止CSRF拦截,而我们自己创建的页面没有token信息,因此会进行CSRF拦截,这个时候在http中将拦截功能关闭就行disable=“true”




	
	
			
	


	
		
			
		
	


 
 
 
	contextConfigLocation
	classpath:spring-security.xml
 
 
	
		org.springframework.web.context.ContextLoaderListener
	
 

   
	springSecurityFilterChain  
	
	org.springframework.web.filter.DelegatingFilterProxy  
   
   
	springSecurityFilterChain  
	/*  
 
	
		org.springframework
		spring-core
		${spring.version}
	
	
		org.springframework
		spring-web
		${spring.version}
	

	
		org.springframework
		spring-webmvc
		${spring.version}
	

	
		org.springframework
		spring-context-support
		${spring.version}
	

	
		org.springframework
		spring-test
		${spring.version}
	

	
		org.springframework
		spring-jdbc
		${spring.version}
	

	
		org.springframework.security
		spring-security-web
		4.1.0.RELEASE
	
	
		org.springframework.security
		spring-security-config
		4.1.0.RELEASE
	

	
		javax.servlet
		servlet-api
		2.5
		provided
	


  		
      
	  
			org.apache.maven.plugins
			maven-compiler-plugin
			3.2
			
				1.7
				1.7
				UTF-8
			
	        
      
			org.apache.tomcat.maven
			tomcat7-maven-plugin
			
				
				9090
				
				/
			
  	  
     

你可能感兴趣的:(SpringSecurity框架登陆模块案例以及出现的重定向和403报错问题解决方式)