Spring Security简介
Spring Security是Spring提供的对于项目的安全框架。以前使用大量的xml配置来实现,而Spring Boot中基于java配置实现Spring Security功能。
安全框架有两个重要概念:认证 和 授权 。认证即确认用户可以访问当前系统,授权即确定用户在当前系统下所拥有的功能权限。 通俗点讲,比如你去豪华酒店吃饭,认证就是你有门票,能进入饭店,授权就是规定了你进了酒店能在哪些区域溜达,不能在哪些区域溜达。
传统Spring Security配置
(1)DelegatingFilterProxy
Spring Security提供过滤器Filter来实现安全功能,我们可以注册一个特殊的DelegatingFilterProxy即可。代码实现AbstractSecurityWebApplicationInitializer可以开启支持:
public class AppInitializer extends AbstractSecurityWebApplicationInitializer{
}
(2)配置
Spring Security通过继承WebSecurityConfigurerAdapter,重写其configure方法来配置相关的安全配置:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
//通过重写此方法来实现请求授权
@Override
protected void configure(HttpSecurity http)throws Exception{
super.configure(http);
}
//通过重写此方法来定制用户权限
@Override
protected void configure(AuthenticationManagerBuilder auth)throws Exception{
super.configure(auth);
}
@Override
public void configure(WebSecurity web)throws Exception{
super.configure(web);
}
}
具体的重写方式这里略过不再演示,网上有很多现成的例子。
Spring Boot对于Spring Security的支持
Spring Boot通过 SecurityAutoConfiguration 和 SecurityProperties 完成了配置。
我们可以获得的自动配置如下:
(1) 自动配置一个内存用户,账号为user,密码在启动时控制台出现
(2) 忽略/css/**,/images/,等静态文件的拦截
(3) 自动配置的securityFilterChainRegistration的Bean
我们需要自己拓展配置时,只需要配置类即冲WebSecurityConfiguererAdapter即可,无需使用@EnableWebSecurity注解
文主经过尝试,发现Spring Security并没有那么好用,条条框框很多,很多实现需要按照它的定义好的方式来做,不如自己写Filter更加的直接好用。
贴一篇 非常非常详细易懂 的Spring Boot 结合Spring Security 实战的博文 :http://blog.csdn.net/u012702547/article/details/54319508
上文写的非常好,有兴趣的可以跟步阅读编码尝试,博主也附了源码。
小tips:Spring Security的使用,有点仁者见仁智者见智,建议根据个人情况以及项目情况来选择使用。
网友评论