基于spring security的简易用户身份认定(基于xml)

pom.xml


  4.0.0
  com.wyc
  SpringSecurity
  war
  0.0.1-SNAPSHOT
  SpringSecurity Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      4.10
      test
    
    
	
	    org.springframework
	    spring-core
	    4.2.6.RELEASE
	
	
	
	    org.springframework
	    spring-context
	    4.2.6.RELEASE
	
	
	
	    org.springframework
	    spring-webmvc
	    4.2.6.RELEASE
	
    
        org.springframework.security
        spring-security-web
        4.1.0.RELEASE
    
    
        org.springframework.security
        spring-security-config
        4.1.0.RELEASE
    
    
	    javax.servlet
	    javax.servlet-api
	    3.0.1
	    
	    provided
	
  
  
    SpringSecurity
     
        
            org.apache.tomcat.maven
	          tomcat7-maven-plugin
	          2.2
        
    
  



web.xml




  Archetype Created Web Application
  
  
	springSecurityFilterChain
	org.springframework.web.filter.DelegatingFilterProxy
  
  
    springSecurityFilterChain
    /*
  
 
      org.springframework.web.context.ContextLoaderListener
  
 


applicationContext.xml



		
		    
		    
		
		
		    
				
				    
				    
				
		    
		


以上俩个文件均存放在/WEB-INF目录下


结果如下图:

登录页面(系统自带)

基于spring security的简易用户身份认定(基于xml)_第1张图片


使用tom登录



使用mike登录

基于spring security的简易用户身份认定(基于xml)_第2张图片


当applicationContext.xml(即缺少hasRole)修改如下

访问时会出现如下错误:

java.lang.IllegalArgumentException: Failed to evaluate expression 'USER'

如果将applicationContext.xml改成如下:



		
		
			
			
		
		
		    
				
				    
				    
				
		    
		

暂时不是很明白这样配置的意义,spring security原文如下:

Basic authentication will then take precedence and will be used to prompt for a login when a user attempts to access a protected resource. Form login is still available in this configuration if you wish to use it, for example through a login form embedded in another web page.

结果如下:

基于spring security的简易用户身份认定(基于xml)_第3张图片



若是使用自定义的登录页面,applicationContext.xml修改如下:


		    
		    
		


其中,login-page属性指的是登录页面,后俩个属性则与登录页面的form表单有关,登录页面login.jsp 内的form表单如下:


其中,action属性与applicationContext.xml中的login-processing-url属性的值必须相同,前俩个input的name属性的值则对应配置文件的username-parameter和password-parameter的值,第三个input是由于spring security使用了csrf(具体是什么还没有去了解),所以必须加入。

如果加入之后运行程序出现以下错误:

HTTP Status 403 - Could not verify the provided CSRF token because your session was not found in spring security。

则需要修改login.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  isELIgnored="false"%>
加入最后一个属性对,因为报这个错的原因是form表单中的csrf未能解析(可以通过查看源代码发现此时csrf并没有任何变化)








你可能感兴趣的:(spring,security)