Spring Seurity系列(一)Security的基本原理

自从入行来一直想不断学习,获取新知识。但我还在处于拼命学习框架的阶段,对于java的算法等深入的原理还是不理解不知道不明白的。但目前也只能从学习热门的框架学起。自己也看过几个大佬的教学视频,但是只是跟着视频走,甚至都没有做自己的笔记,以至于看过教学视频后,再重头回顾知识点就和没学过一样。因此今天从头开始进行学习的记录,自己也没有文笔,看看以后这个系列的笔记做的怎么样吧,做的好的话考虑分享在网上,目前仅供学习记录。

一:security的基本原理:

项目中只要引入spring-social-security的依赖,其他不做任何的配置,访问项目时,spring security会给我们做基本的配置,访问资源时会受到权限的拦截,需要登录。

1.1:如果想让security暂且不生效,可以在配置文件中做如下配置:

这样访问项目中的资源时就不会被拦截!

1.2:注释掉上面的配置后,默认的basic的登录模式如图所示:

用户名默认为user

密码是项目启动时随机生成的密码,如下图所示:

登录成功后默认的显示,如下图:

1.3:配置不适用basic的登录模式:

@Configuration
public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter {
	@Override
	protected void configure(HttpSecurity http) throws Exception {
		
		http.formLogin()
			.and()
			.authorizeRequests()
			.anyRequest()
			.authenticated();
	}
}

1.4:原理源码分析:

在如图所示打上断点进行源码跟踪:

请求会首先被FilterSecurityInterceptor拦截,判断是否已经进行了登录认证,如果没有会在ExceptionTranslationFilter中跑出异常,重定向到登录的页面,具体是表单登录还是basic登录要看具体的配置。

当请求中包含登录信息时,会经过UsernamePasswordAuthenticationFilter这个拦截器,进行登录认证的操作。

猜你喜欢

转载自blog.csdn.net/newhanzhe/article/details/81156113