Spring Security教程系列(一)基础篇-2

时间:2023-03-10 01:15:40
Spring Security教程系列(一)基础篇-2

第 4 章 自定义登陆页面

Spring Security虽然默认提供了一个登陆页面,但是这个页面实在太简陋了,只有在快速演示时才有可能它做系统的登陆页面,实际开发时无论是从美观还是实用性角度考虑,我们都必须实现自定义的登录页面。

4.1. 实现自定义登陆页面

自己实现一个login.jsp,放在src/main/webapp/目录下。

4.2. 修改配置文件

在xml中的http标签中添加一个form-login标签。

<http auto-config="true">
<intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />1
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp" 2
authentication-failure-url="/login.jsp?error=true" 3
default-target-url="/index.jsp" />4
</http>

1

让没登陆的用户也可以访问login.jsp。[2]

这是因为配置文件中的“/**”配置,要求用户访问任意一个系统资源时,必须拥有ROLE_USER角色,/login.jsp也不例外,如果我们不为/login.jsp单独配置访问权限,会造成用户连登陆的权限都没有,这是不正确的。
 
2
 login-page表示用户登陆时显示我们自定义的login.jsp。

这时我们访问系统显示的登陆页面将是我们上面创建的login.jsp。
 
3
 authentication-failure-url表示用户登陆失败时,跳转到哪个页面。

当用户输入的登录名和密码不正确时,系统将再次跳转到/login.jsp,并添加一个error=true参数作为登陆失败的标示。
 
4
 default-target-url表示登陆成功时,跳转到哪个页面。[3]

4.3. 登陆页面中的参数配置

以下是我们创建的login.jsp页面的主要代码。

<body>

<div class="error  ${param.error == true ? '' : 'hide'}">
${sessionScope['SPRING_SECURITY_LAST_EXCEPTION'].message}
</div>
<form action="${pageContext.request.contextPath}/j_spring_security_check" method="post">
<fieldset>
<legend>登陆</legend>
用户: <input type="text" name="j_username" style="width:150px;" value="${sessionScope['SPRING_SECURITY_LAST_USERNAME']}"/><br />
密码: <input type="password" name="j_password" style="width:150px;" /><br />
<input type="checkbox" name="_spring_security_remember_me" />两周之内不必登陆<br />
<input type="submit" value="登陆"/>
<input type="reset" value="重置"/>
</fieldset>
</form>
</body>

1
 /j_spring_security_check,提交登陆信息的URL地址。

自定义form时,要把form的action设置为/j_spring_security_check。注意这里要使用绝对路径,避免登陆页面存放的页面可能带来的问题。[4]
 
2
 j_username,输入登陆名的参数名称。
 
3
 j_password,输入密码的参数名称
 
4
 _spring_security_remember_me,选择是否允许自动登录的参数名称。

可以直接把这个参数设置为一个checkbox,无需设置value,Spring Security会自行判断它是否被选中。
 
?????????? _spring_security_remember_me功能好像用不了,待续

4.4. 测试一下

经过以上配置,我们终于使用了一个自己创建的登陆页面替换了原来Spring Security默认提供的登录页面了。我们不仅仅是做个样子,而是实际配置了各个Spring Security所需的参数,真正将自定义登陆页面与Spring Security紧紧的整合在了一起。以下是使用自定义登陆页面实际运行时的截图。

aaarticlea/png;base64,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" alt="" />

登陆失败

aaarticlea/png;base64,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" alt="" />

登陆成功

aaarticlea/png;base64,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" alt="" />

[2] 有关匿名用户的知识,我们会在之后的章节中进行讲解。

[3] 登陆成功后跳转策略的知识,我们会在之后的章节中进行讲解。

[4] 关于绝对路径和相对路径的详细讨论,请参考http://www.family168.com/tutorial/jsp/html/jsp-ch-03.html#jsp-ch-03-04-01


第 5 章 使用数据库管理资源

国内对权限系统的基本要求是将用户权限和被保护资源都放在数据库里进行管理,在这点上Spring Security并没有给出官方的解决方案,为此我们需要对Spring Security进行扩展。

5.1. 数据库表结构

这次我们使用五张表,user用户表,role角色表,resc资源表相互独立,它们通过各自之间的连接表实现多对多关系。

-- 资源
CREATE TABLE resc(
id BIGINT,
NAME VARCHAR(50),
res_type VARCHAR(50),
res_string VARCHAR(200),
priority INTEGER,
descn VARCHAR(200)
);
ALTER TABLE resc ADD CONSTRAINT pk_resc PRIMARY KEY(id);
ALTER TABLE resc CHANGE id id BIGINT AUTO_INCREMENT; -- 角色
CREATE TABLE role(
id BIGINT,
NAME VARCHAR(50),
descn VARCHAR(200)
);
ALTER TABLE role ADD CONSTRAINT pk_role PRIMARY KEY(id);
ALTER TABLE role CHANGE id id BIGINT AUTO_INCREMENT; -- 用户
CREATE TABLE USER(
id BIGINT,
username VARCHAR(50),
PASSWORD VARCHAR(50),
STATUS INTEGER,
descn VARCHAR(200)
);
ALTER TABLE USER ADD CONSTRAINT pk_user PRIMARY KEY(id);
ALTER TABLE USER CHANGE id id BIGINT AUTO_INCREMENT; -- 资源角色连接表
CREATE TABLE resc_role(
resc_id BIGINT,
role_id BIGINT
);
ALTER TABLE resc_role ADD CONSTRAINT pk_resc_role PRIMARY KEY(resc_id, role_id);
ALTER TABLE resc_role ADD CONSTRAINT fk_resc_role_resc FOREIGN KEY(resc_id) REFERENCES resc(id);
ALTER TABLE resc_role ADD CONSTRAINT fk_resc_role_role FOREIGN KEY(role_id) REFERENCES role(id); -- 用户角色连接表
CREATE TABLE user_role(
user_id BIGINT,
role_id BIGINT
);
ALTER TABLE user_role ADD CONSTRAINT pk_user_role PRIMARY KEY(user_id, role_id);
ALTER TABLE user_role ADD CONSTRAINT fk_user_role_user FOREIGN KEY(user_id) REFERENCES USER(id);
ALTER TABLE user_role ADD CONSTRAINT fk_user_role_role FOREIGN KEY(role_id) REFERENCES role(id); INSERT INTO USER(id,username,PASSWORD,STATUS,descn) VALUES(1,'admin','admin',1,'管理员');
INSERT INTO USER(id,username,PASSWORD,STATUS,descn) VALUES(2,'user','user',1,'用户'); INSERT INTO role(id,NAME,descn) VALUES(1,'ROLE_ADMIN','管理员角色');
INSERT INTO role(id,NAME,descn) VALUES(2,'ROLE_USER','用户角色'); INSERT INTO resc(id,NAME,res_type,res_string,priority,descn) VALUES(1,'','URL','/admin.jsp',1,'');
INSERT INTO resc(id,NAME,res_type,res_string,priority,descn) VALUES(2,'','URL','/**',2,''); INSERT INTO resc_role(resc_id,role_id) VALUES(1,1);
INSERT INTO resc_role(resc_id,role_id) VALUES(2,1);
INSERT INTO resc_role(resc_id,role_id) VALUES(2,2); INSERT INTO user_role(user_id,role_id) VALUES(1,1);
INSERT INTO user_role(user_id,role_id) VALUES(1,2);
INSERT INTO user_role(user_id,role_id) VALUES(2,2);

1.使用过滤器

<custom-filter ref="filterSecurityInterceptor" before="FILTER_SECURITY_INTERCEPTOR"/>

2.配置过滤器

<beans:bean id="filterSecurityInterceptor" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">

       <beans:property name="authenticationManager"  ref="authenticationManager" />
<beans:property name="accessDecisionManager" ref="accessDecisionManager" />
<beans:property name="securityMetadataSource" ref="databaseDefinitionSource" /> </beans:bean>
      <beans:bean id="accessDecisionManager"
class="org.springframework.security.access.vote.AffirmativeBased">
<beans:property name="allowIfAllAbstainDecisions" value="false" />
<beans:property name="decisionVoters">
<beans:list>
<beans:ref bean="ftsp_security_urlVoter" />
</beans:list>
</beans:property>
</beans:bean> <beans:bean id="ftsp_security_urlVoter" class="springUrl.UrlVoter"/>
<beans:bean id="databaseDefinitionSource" class="springUrl.FtspSecurityMetadataSource">

3.java类 FtspSecurityMetadataSource 实现FilterInvocationSecurityMetadataSource

实现方法getAttributes

package springUrl;

import java.util.ArrayList;
import java.util.Collection; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.access.SecurityConfig;
import org.springframework.security.web.FilterInvocation;
import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource; public class FtspSecurityMetadataSource implements
FilterInvocationSecurityMetadataSource { public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
String url = ((FilterInvocation) object).getRequestUrl(); Collection<ConfigAttribute> confDef = new ArrayList<ConfigAttribute>();
confDef.add(new SecurityConfig(url));
return confDef;//1
} public Collection<ConfigAttribute> getAllConfigAttributes() {
// TODO Auto-generated method stub
return null;
} public boolean supports(Class<?> clazz) {
return clazz.isAssignableFrom(FilterInvocation.class);
} }
getAttributes中,可以对获取的url做一些处理,比如查出数据库的url和该url对比,改变该url。。。。等等

4.java类 UrlVoter实现AccessDecisionVoter<Object>

实现方法vote,attributes就是上文FtspSecurityMetadataSource类的getAttributes方法返回的参数,getAttributes返回了url的话,

这里可以查出数据库的url和该url对比,返回(ACCESS_GRANTED,ACCESS_ABSTAIN,ACCESS_DENIED),

ACCESS_GRANTED通过,

ACCESS_ABSTAIN,ACCESS_DENIED 禁止。

达到了数据库管理url权限

package springUrl;

import java.util.Collection;

import org.springframework.security.access.AccessDecisionVoter;
import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.FilterInvocation; public class UrlVoter implements AccessDecisionVoter<Object> { public boolean supports(ConfigAttribute attribute) {
return true;
} public boolean supports(Class<?> clazz) {
return clazz.isAssignableFrom(FilterInvocation.class);
} public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes) {
return ACCESS_GRANTED;
} }

如图

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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K/R/V067XR8y07D61ijFDJn8qRCuzQEAJiHjc8Aky0wUNcIiMwHA1GZ8DiAzUZS8yEwAMLUZnwPITBQlLzITAExtxucAMhNFyYvMBABTm/E5gMxEUfIiMwHA1GZ8DhAEiqLUBQCYqshMFOVLAQCmKs4BAAAA1shMAAAA1shMAAAA1shMAAAA1shMAAAA1shMAAAA1shMAAAA1shMAAAA1gwz00sAAABwM8xMOQAAAHDj2hwAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMAAIA1MhMA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" alt="" />

完整的applicationContext-security.xml

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd"> <http auto-config="true" >
<access-denied-handler error-page="/accessDenied.jsp"/>
<intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" default-target-url="/index.jsp" /> <!-- TODO 在SS3.0.x中,自定义的filter的配置要放在s:http里 -->
<custom-filter ref="filterSecurityInterceptor" before="FILTER_SECURITY_INTERCEPTOR"/>
</http> <authentication-manager alias="authenticationManager">
<authentication-provider>
<!-- <password-encoder hash="md5">
<salt-source user-property="username"/>
</password-encoder> -->
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select username,password,status as enabled
from user
where username=?"
authorities-by-username-query="select u.username,r.name as authority
from user u
join user_role ur
on u.id=ur.user_id
join role r
on r.id=ur.role_id
where u.username=?"/>
</authentication-provider>
</authentication-manager> <beans:bean id="filterSecurityInterceptor" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor"> <beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="accessDecisionManager" ref="accessDecisionManager" />
<beans:property name="securityMetadataSource" ref="databaseDefinitionSource" /> </beans:bean> <beans:bean id="accessDecisionManager"
class="org.springframework.security.access.vote.AffirmativeBased">
<beans:property name="allowIfAllAbstainDecisions" value="false" />
<beans:property name="decisionVoters">
<beans:list>
<beans:ref bean="ftsp_security_urlVoter" />
</beans:list>
</beans:property>
</beans:bean> <beans:bean id="ftsp_security_urlVoter" class="springUrl.UrlVoter"/>
<beans:bean id="databaseDefinitionSource" class="springUrl.FtspSecurityMetadataSource"> </beans:bean> </beans:beans>

第 6 章 控制用户信息

让我们来研究一些与用户信息相关的功能,包括为用户密码加密,缓存用户信息,获得系统当前登陆的用户,获得登陆用户的所有权限。

6.1. MD5加密

任何一个正式的企业应用中,都不会在数据库中使用明文来保存密码的,我们在之前的章节中都是为了方便起见没有对数据库中的用户密码进行加密,这在实际应用中是极为幼稚的做法。可以想象一下,只要有人进入数据库就可以看到所有人的密码,这是一件多么恐怖的事情,为此我们至少要对密码进行加密,这样即使数据库被攻破,也可以保证用户密码的安全。

最常用的方法是使用MD5算法对密码进行摘要加密,这是一种单项加密手段,无法通过加密后的结果反推回原来的密码明文。

首先我们要把数据库中原来保存的密码使用MD5进行加密:

INSERT INTO USERS VALUES('admin','21232f297a57a5a743894a0e4a801fc3',TRUE)
INSERT INTO USERS VALUES('user','ee11cbb19052e40b07aac0ca060c23ee',TRUE)

现在密码部分已经面目全非了,即使有人攻破了数据库,拿到这种“乱码”也无法登陆系统窃取客户的信息。

下一步为了让Spring Security支持MD5加密,我们需要修改一下配置文件。

<authentication-provider>
<password-encoder hash="md5"/>
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider>

上述代码中新增的黄色部分,将启用MD5算法。用户登录时,输入的密码是明文,需要使用password-encoder将明文转换成md5形式,然后再与数据库中的已加密密码进行比对。

这些配置对普通客户不会造成任何影响,他们只需要输入自己的密码,Spring Security会自动加以演算,将生成的结果与数据库中保存的信息进行比对,以此来判断用户是否可以登陆。

这样,我们只添加了一行配置,就为系统带来了密码加密的功能。

6.2. 盐值加密

实际上,上面的实例在现实使用中还存在着一个不小的问题。虽然md5算法是不可逆的,但是因为它对同一个字符串计算的结果是唯一的,所以一些人可能会使用“字典攻击”的方式来攻破md5加密的系统[5]。这虽然属于暴力解密,却十分有效,因为大多数系统的用户密码都不回很长。

实际上,大多数系统都是用admin作为默认的管理员登陆密码,所以,当我们在数据库中看到“21232f297a57a5a743894a0e4a801fc3”时,就可以意识到admin用户使用的密码了。因此,md5在处理这种常用字符串时,并不怎么奏效。

为了解决这个问题,我们可以使用盐值加密“salt-source”。

修改配置文件:

<authentication-provider>
<password-encoder hash="md5">
<salt-source user-property="username"/>
</password-encoder>
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider>

在password-encoder下添加了salt-source,并且指定使用username作为盐值。

盐值的原理非常简单,就是先把密码和盐值指定的内容合并在一起,再使用md5对合并后的内容进行演算,这样一来,就算密码是一个很常见的字符串,再加上用户名,最后算出来的md5值就没那么容易猜出来了。因为攻击者不知道盐值的值,也很难反算出密码原文。

我们这里将每个用户的username作为盐值,最后数据库中的密码部分就变成了这样:

INSERT INTO USERS VALUES('admin','ceb4f32325eda6142bd65215f4c0f371',TRUE)
INSERT INTO USERS VALUES('user','47a733d60998c719cf3526ae7d106d13',TRUE)

6.3. 用户信息缓存

6.4. 获取当前用户信息

如果只是想从页面上显示当前登陆的用户名,可以直接使用Spring Security提供的taglib。

maven需要包

        <dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%String path=request.getContextPath(); %>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录首页</title>
</head>
<body>
<div>username : <sec:authentication property="name"/></div>
<span color="red">登录成功!</span>
<a href="<%=path %>/welcome">welcome</a>
</body>
</html>

如果想在程序中获得当前登陆用户对应的对象。

UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext()
.getAuthentication()
.getPrincipal();

如果想获得当前登陆用户所拥有的所有权限。

        Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();

关于UserDetails是如何放到SecuirtyContext中去的,以及Spring Security所使用的TheadLocal模式,我们会在后面详细介绍。这里我们已经了解了如何获得当前登陆用户的信息。

[5] 所谓字典攻击,就是指将大量常用字符串使用md5加密,形成字典库,然后将一段由md5演算得到的未知字符串,在字典库中进行搜索,当发现匹配的结果时,就可以获得对应的加密前的字符串内容。

第 7 章 自定义访问拒绝页面

在我们的例子中,user用户是不能访问/admin.jsp页面的,当我们使用user用户登录系统之后,访问/admin.jsp时系统默认会返回403响应。

aaarticlea/png;base64,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" alt="" />

如果我们希望自定义访问拒绝页面,只需要随便创建一个jsp页面,让后将这个页面的位置放到配置文件中。

下面创建一个accessDenied.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Access Denied</title>
<style type="text/css">
div.error {
width: 260px;
border: 2px solid red;
background-color: yellow;
text-align: center;
}
</style>
</head>
<body>
<h1>Access Denied</h1>
<hr>
<div class="error">
访问被拒绝<br>
${requestScope['SPRING_SECURITY_403_EXCEPTION'].message}
</div>
<hr>
</body>
</html>

下一步修改配置文件,添加自定义访问拒绝页面的地址。

<http auto-config="true"   access-denied-page="/accessDenied.jsp">

<intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" default-target-url="/index.jsp" />
</http>

aaarticlea/png;base64,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" alt="" />

ide会报错,但不影响使用

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABEsAAAEQCAIAAADHy22/AAAgAElEQVR4nO29a3AUV5rn3RH7xn7YDxtv7MZ2T+xsR0xkdEzUhmJZTb3EruxwwLJBGGYlJGEb3sGXHhAgbKPYYC3sNm2mxz3Cxruhbdlm1sJm2sA0vqglj7AMxoVsGYyMShIWN126EDYICUFjCyjKl0Jccj+czJMnT56TebIuqqzU/xcVBE/pVOa5n+ef55I/0gEAAAAAAABgRrh58+Z3332XTCa/+eabycnJ/fv3Dw0NXbx4cdn/2Tyv/bHlXzxuftY98Pma/3HkucTVL+lvW/6wt/Lgzx+Mrx29/hV32RNXh5b1r1s+sG75wOM/mtkUAQAAAAAAAGYvnMLp6urq7++fmJjY9O5r0Z0rln2xzvw8/lBfbVXXX5d3rFj10X/f9PkLy/evqfjw0aXdax44urriw0fub12++L2/+su9f7V471+Vdzxc2fnzZV88/tAX65Z9sQ4KBwAAAAAAADBDpNNpVuH09fV9/PHH4+Pjv++Oaf9z6UPHah/6Yt1Dx9Y9dGzdQ/3rHoivrf6spvKTv15y8OeVn65cenT1g321D/bXLv18ddXhVVWHVlUfWlX16aqqw6se6F5NfrXsGBQOAAAAAAAAYKbgFM7omTPvvvvuhQsX/vDl2T99trrq6NoHj9U+eGwd/fehY7UPHVv3oPEhX657iPnX/KaWfgmFAwAAAAAAAJghuFVq58+de++9906fPn3hwoVHtv/tf3rn4QeP1T54rPbBfuvfB5j/2/5q/Gfdg/21D/bXPti/jnwPhQMAAAAAAACYIXiFc/784cOHu7q6xsbGWg4f+OnfLV3av/aB/toHjtU+0M98GHMp+z0JbP8eCgcAAAAAAAAwQ9y8efP777+/cePG1NTUpUuXLoyNDQ0Nvf3221999dW5c+fufeHxee///IH+2qV9tQ/0r11qfGqX9q1d2r/2gb7apf1rl/aZ3/StfaC/ligiYi7tX7u0DwoHAAAAAAAAMFNMT08ThXP16tXLly+PX7gwOjp64MCB7u7uc+fOvdm599/9uqoybsiV6r611UTk9K1d2re2us/8T//aavNL5q+15F8oHAAAAAAAAMAMMT09/cMPP6RSqWvXrv3xj38cHx8/e/bswMDAW2+9NTo6+tVXX/3lb+r/YveK6r611X1rqvvWVveure6TfdZU95phekn4NdW9a6BwAAAAAAAAADPErVu30un0t99+e/369a+//nry4sVzX301MjKyf//+jz/++KuvvvpsoO+nzzz4Xz/666q+NdW9a6r61lb3ra3qW1vVu6aqb01V79rqvjVVvWuqe9dW966p7ltD/lTdt6aqdy35KxQOAAAAAAAAYIYgCoceNnD50qXz58+fSSROnDixa9euEydOfPnll/9nf8u//VXl4sOrqnrXVPWuqYyvrepdU9m7xjDN/9D/V/auqYpb30PhAAAAAAAAAGaI27dv08MG6Facs2fPDg0NfdzZ+c4775w5c+bLL7/8H79r+unfVZUfqansXVPZu7oyvqay1/zE11TGV1fFmS/jq43ve9dUQuEAAAAAAAAAZozbt2+TrTjcQrXEH/5w6uTJjo6OvXv3nj17dnR09Imd/+unf1e16NOVlfHVRMMsIf+Jr17CfLMkbkigJXFD5EDhAAAAAAAAAGaIO3fusAvV6JnRo6OjQ0NDAwMD7e3t+/fvJyLnF2///b/9VeWCA3+9JL56Sc/qJT2rl5jyZkkPkTprjD/R/8dXQ+EAAAAAAAAAZog7d+7QaRxyotqVK1cmJibINM7pU6e+OHbsvffe29fRcebMmdHR0W0fvPPTZx4s3fX//7fPVy+Jr64gnx5D8FTEjX8reow/LemBwgEAAAAAAADMFHfv3r19+7ZzGofsxhkeHj5+/Hhfb29ra+t77703MjIyOjr6aX/P4v/91L/7ddW9//TIf+tZVdGzeklPTUXP6oqe1UviNRXx1RXxmiU9qyviNRU9NRXxGigcAAAAAAAAwAxx9+5dslDt5s2b7DTO5MWL58+dGz1zZmhwcGBgoDceb2tr27179xdffHHmzJlEIvHGgbZ7X3z8T3+9NLpnxaJDqyqO1lQcranoqanoqSnvWV1hfGoqeqBwAAAAAAAAADMFUTjsNM6NGzempqbI2z/ZtWrxnp73339/+/btH3zwwfDwMNE5ez7uWPHa3/zpM9V/9tLS//APy8raHv4vBx69/9Cqv/x81V9+vur+Qyv/y4GfQ+EAAAAAAAAAZg4qcthD1b755huyVu2rL78cGRk5dfLkF8eOHT169NCnn777zjtvvPFGLBYbHh5OJBKJROL46dO/+6Sj/h+blrz89F/8uubPnl3+46eqfvxU1Z89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" alt="" />aaarticlea/png;base64,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" alt="" />

查了一下

http://*.com/questions/29786510/spring-security-warning-about-the-tag-access-denied-page-cvc-complex-type-3-2

应该就是spring security3和spring security2的区别吧

现在访问拒绝的页面就变成了下面这样:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAc8AAADECAIAAAB2qj0LAAALVUlEQVR4nO3bTZrbqBoGUC0qq+lp1phxL40e1O26agsQIPFZZc55GFQk/iXeOE6yJQDm2949AYAlSFuACNIWIIK0BYggbQEiSFuACNIWIIK0BYggbQEiSFuACNIWIIK0BYggbQEiSFuACNIWIIK0BYggbQEiSFuACNIWIIK0BYggbQEiSFuACNI21LZt22bPCeJ9exRPIsi28+65fI6t6t2z+4/IiT15H1bmSQTx9s9z3NgH7nb8lJ62A3gSQR54/j9GaWMfteHSFk8iiLSdp7KxK+/5ymt/Jk8iwnbw7hl9FGmbtfLan8mTiPD90jsAM0jbrJXX/kyeRARpO1V9V2/c84v9BD96L9vTeBIRxtJ24PuHgCbH+vul3dWkS33mjXcr1bIVWjattPCuRTU2zI511w5zC09iutIpbWnS3upKk8qV0ybZoS826VXvqnS3d/nbQUurxs6vTKze5JYd5haexHTXT85pw/c2ub23XvWusnevTLirVVedixMbG5EwnsR0L2/86RmIOW+n8dQ+SqXVQJMBLaNsubTtmtXA/vfWuXdijSMSxpOY7uWNH4iG+q17mwy36urqXr3LuX35Lcu8Xid79+KsiORJzLVVVeoPDHFXk5bptQ830KRX73LGln/xqV2vk71777vEVJ7EXDPO7Y1N6hrbDgzXPtWu5TTeHVt+ZZSWdXXVaZ/YxVkRyZOYa8a5fUuTUg/tXQ006Z1M492xCVx8anfVuXdWRPIk5vrUtD121d7b7YHbu5/SlrfwJCYqve5XTshAdtwSNy1DZEfpajJG2krbH8GTmKjyrg8fkuytgCYD0TnQZMzpZvaO3rtjNybp8MSGRySMJzHR6bHpPSRvbNKSAlsubQd2oFepq+BNrq+lcb13TWzbqY9IGE9ilitZUzk/XcM1NtnXOU2uyq3rTcZUVnHX8odvddUZm9jx7pZzOi6zeQZT1N/1xpMwcGDmNcke4HqrgSa9rvc/vJDTWxd3oHc5x8rtm0AMDwMggrQFiCBtASJIW4AI0hYggrQFiCBtASJIW4AI0hYggrQFiCBtASJIW4AI0hYggrQFiCBtASJIW4AI0hYggrQFiCBtASJIW4AI0hYggrQFiCBtASJIW4AI0hYggrQFiCBtASJIW4AI0hYggrQFiCBtp/gL6PHuIxtB2k7xN9Dj3Uc2grQFiCBtASJIW4AI0hYggrQFiCBtASJIW4AI0hYggrSdY9sURXkta1t9/bO8/bVWlAeWta2+/ln+924pirKlJG1TSmn19c8ibXNly+1J9mJXhZbKlU4u9t/VfN0ibVNaff2zSNtCKQVuPbO+7pY0DtEypdP+s1fevqs/oEjblFZf/yzStlDa87Gxwu1p2zWTlvRXUpK2KaW0+vpnkbaF8h1Gdcf6Fzusf1xtHO402UVtsUjblFZf/yzStqd0fXRtqbBtr7f2ofz9wzGCG9M2W1nU1oq0TWn19c8ibXtKS9qWPp/2pm199MoH4Ww0V+or/ynSNqXV1z+LtD2USh5V0qqUqpW03Q6fQOtRuI/mSm/1+pX5KClJ25RSWn39s0jbcqkn2sW0ffngWe/8pcnp3FqmIW3zRdqmtPr6Z5G25dKYXy+/bLmezdl62r584O36nSA7DWmbL9I2pdXXP4u0LZfhtH1xrLD/4Vin8in45WJpoNOLL9mt/L9I25RWX/8s0rZcxtK2sbdUzd/THnqzUra2Fmmb0urrn0Xalss++ypZmf1lqbfslcYYlbYRRdqmtPr6Z5G25XL8M/7L3covs72Vrkz6bLv/xiBbXwRnirRNafX1zyJty6X02TP7peeNaVvqrf0j8HGG0ra1SNuUVl//LNL2rDQG6+k3AKdpe8zHSoWS+kK66i9apG1Kq69/Fml7UzlNutLF0yxu6V+5rUjblFZf/yzSVlH2RdqmtPr6Z5G2irIv0jal1dc/i7RVlH2Rtimtvv5ZpK2i7Iu0TWn19c8ibRVlX6RtSquvf5ZPTNsf8df3t/8DrIsdDjf/tH9JJm1TWn39s0jb903y9nm+JW1/yoa3Fmmb0urrn+VD0/ajzn/Pwpcad0qRtimtvv5ZPi5tS/9ZYIUibW8o0jal1dc/y0ppW/rvqtnrpf/eWvqfr13/I7ZSraufylSPF79/rlRu7Pz01g8u0jal1dc/y4embToE7ku41H8ute293jjV0pWWfnrnX1p773wq/fzsIm1TWn39s3xi2mY/u5Uqn3ay76q3n9OpXuynnqqn829J24F+fnaRtimtvv5ZPittez98DaRnNs0r1xtnO9ZPJW276pdajfXzs4u0TWn19c/yuWmb+tPn9HpM8+EK0vaGIm1TWn39s6yRtr0/N6bYxT9Zn6Zb18fb/cfhsXl2zSc77icUaZvS6uuf5YPS9uUP4Mc/jx+vVK7vZS+2XD+d6sV+9q3SIXDrG7L/ZWXcynyy4/74Im1TWn39s3xQ2irKDUXaprT6+meRtoqyL9I2pdXXP4u0VZR9kbYprb7+WbZNUZTXsrbV1z/L219rRXlgWdvq6weIIW0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtJ3iL6DHu49sBGk7xd9Aj3cf2QjSFiCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAjSFiCCtOXNtm3bto73sLf+WJPGhmM9X1/C8Ip4Iw/subZm757puLekVal59npL4P7586frAR0nc9rq5Up9Vq3vTcMcWpZDIxv3XNu2/fr1a//L+rn9cRonPxYElV9Wxt227ffv3wOTrE++crGl/2OdrgQcWMKPfq8ey4Y+171pW8+m9obt8++dTGmIxnFfqtUjtXLr9+/f9elt14IyXU7b9pU29n9XK+ps6HNtu7Qtnfn2U9F7wrM17zqEpX6O1xtHPA213g5bavYG5fEJfn8F0dJDtn6lefad2b88V9bFAHv6XNu/aftyQq7n5nDi3HUOS/3ce84j07YUZ6U51H8fzXb79aG78h1x4/zr1+tOtowq2/dcX2fy+y3fOj/aVLptb3J9uK453B4Ex1uVYPrykoONq2j5ed+wMkqpyfcXyvtX4uWH3ull62crn+4Gp2zfc23//d42XfiD9sUmFxuWuiq5cSYvNVsC9PTbm2xvXdG2/fv7aPabhNMrxwQsjdI+pVJv9SHoYvue63jy93+K3F/v6nP4zNx43k4P/I0z6dqu455XBr2StpUUax93atruVVrRzvY91/GNb7nV0ufwZAYadvVWGaUlLyrDtfx9VApJ25en1tJtNviyt3qnl62frXzvC7Am2/dc2dNeOZkDfU5tddphY2oc59DeqncJ28y0/fr5JfdPN2H4obdMKVs/W7lxUCps33Nl3+/TozjQ5+1NhvusjNWSF5Xhuj7bZuvXU68Ul6cPcd4T2Qfl9z8irjR/qfCyFml7ne17ruxhrtTp7fPlYkv8tUxpeBqV69mhB8Y6bfhVYeAvr1p+vrKW0+Crb93Xv2eoj5Xtvz4oXWzfc5WOdyn+xvrMdnu8tXfaamwa9ev7BGwft7SHp/VbGrZM4zQZW+bT8tAbt7QyXHbtA3tOie17rmzSZb17pt26lnM8/C1tK5tzum8vI5a+hTjtJPt1ROP3tls1jlu2rrTM0205nRJjbN9ztbzfP/QM1A98S83Tzhu3riWM2mfbUiHgkZ3uwMDEfuib9ii2DyCCtAWIIG0BIkhbgAjSFiCCtAWIIG0BIkhbgAj/APNiWTW+TpX0AAAAAElFTkSuQmCC" alt="" />

查了官方文档,其实也可以这样写,效果一样又不警告

<http auto-config="true" >
<access-denied-handler error-page="/accessDenied.jsp"/>
<intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" default-target-url="/index.jsp" />
</http>

第 8 章 动态管理资源结合自定义登录页面


第 9 章 中文用户名


第 10 章 判断用户是否登录

<http auto-config='true'>
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY" />
</http>

这样除了/admin.jsp之外所有的URL,只要是登录用户就可以访问了。

源码:http://pan.baidu.com/s/1pKnxLRP