SpringSecurity学习笔记(一)
这几天的项目要用安全框架的验证,单点登陆所以又拿出来学习一下以备日后常用!!
通常来说牢记两个概念:
安全包括两个主要操作。
“认证”, 是为用户建立一个他所声明的主体。 主体一般式指用户, 设备或可以在你系 统中执行
动作的其他系统。
“授权”指的是一个用户能否在你的应用中执行某个操作, 在到达授权判断之前, 身份的主体已
经由 身份验证过程建立了。
基于IEFT RFC 的标准) HTTP Digest authentication headers (一个基于IEFT RFC 的标准) HTTP
X.509 client certificate exchange (一个基于IEFT RFC 的标准) LDAP (一个非常常见的跨平台认证
需要做法, 特别是在大环境) Form-based authentication (提供简单用户接口的需求) OpenID
authentication Computer Associates Siteminder JA-SIG Central Authentication Service (CAS, 这
是一个流行的开源单点登录系统) Transparent authentication context propagation for Remote
Method Invocation and HttpInvoker (一个Spring远程调用协议)
快速入门ssm+springSecurity
首先采用xml形式的配置
web.xml配置
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这是一个过滤器链
Spring Security常用的一些配置纯注解形式
1.创建过滤器
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}
注解@EnableWebSecurity, 可以创建一个名为springSecurityFilterChain 的Filter
继承WebSecurityConfigurerAdapter 目的是重写方法实现自定义的配置
2. 注册过滤器
自定义类 extends AbstractSecurityWebApplicationInitializer
父类实现了WebApplicationInitializer 父类在框架启动时候会被加载 一定走 onStartup方法 orStrat方法内 注册过滤器执行链
结合项目中的实际使用
一、 完善登陆的配置
1. 登陆验证的密码使用加密的密文实现
在springSecurity的配置类中加入解密的encoder对象
在使用userDetailService时候引入对象
在service业务类查询用户对象密码 把{noop} 去掉
2. 登陆成功权限不足的拒绝页面
.and().exceptionHandling().accessDeniedPage("/accessDenied.jsp");
3. 退出成功的跳转页面
页面加入<a>标签请求地址为 /logout.do
二、 完善权限的认证
需求:所有用户成功登陆可以进入主页,根据不同用户,拥有的不同权限,做验证是否可以做对应的请求操作
开启注解@EnableGlobleMethodSecurity(参数prePostEnabled=true) 针对请求方法拦截
针对用户的权限验证 加在service的方法上@PreAuthorize("hasAuthority('权限名称')")