关于SpringSecurity的入门配置和一些基本的理解

框架

关于SpringSecurity的一些理解:

SpringSecurity和Shiro框架一样,都是权限控制框架,关于权限控制的差不多能大致分为三个功能:

1.对一些需要请求过来,校验请求判断是否有权限

2.登录功能。对用户登录之后的授权功能,授予用户所对应的权限

3.判断登录的用户是否有权限显示或者隐藏一些功能模块,如:用户张三是没有X模块删除功能的,那么张三登录后这个X模块删除功能则不会对张三用户显示。

总体来说权限控制框架便是实现这些功能,因为SpringSecurity和SpringBoot框架实现了完美的整合,所以我们使用SpringBoot作为项目的框架的话,那么权限控制框架便可以使用SpringSecurity而不是Shiro框架。那么接下来就开始SpringSecurity框架的入门配置(注:基于SpringBoot的配置)。

1.创建SpringSecurity的Configuration配置类,该类继承WebSecurityConfigurationAdapter抽象类。通过从写父类的Configure(注:该父类有两个Configure方法,这里需要重写的是HttpSecurity参数方法)方法实现认证,通过重写UserDetailsService方法实现授权方法,除了这两个方法之外还需要创建一个PasswordEncoder方法并使用IOC方式添加到Spring容器中,因为数据库的中的密码都是通过该方法加密,是SpringSecurity提供的加密算法接口。

认证方法:

 

 

 授权方法 :

 

 

2. 因为数据需要从数据库中获取,所以需要新建一个Security包来编写一个返回用户的实体类来实现UserDetails接口并实现里面的各种方法来实现登录逻辑,这些自定义的参数必须写有参构造方

法。

 

 

3.再创建一个用于授权方法返回的类,该类实现UserDetailsService接口,然后重写接口里面的loadUserByUsername方法,方法返回的就是之前声明的Security配置授权方法需要的UserDetails,然后根据登录时传入的账号查询数据库中的用户信息封装之后便实现了登录的功能。

 

 

总结:SpringSecurity框架如何是基于SpringBoot框架来配置,相对来说配置步骤较小,配置流程也比较容易记住。而除此之外Thymeleaf还对SpringSecurity有着支持。

配置Thymeleaf支持需要先导入依赖:

 

 

 然后在Thymeleaf页面导入:

 

 

 便能够使用SpringSecurity的方法对页面进行权限的显示或者隐藏。

 

 

 

 相关的一些API:

@EnableWebSecurity:用于启动SpringSecurity框架

@EnableGlobalMethodSecurity(prePostEnabled = true):用于启动支持方法注解权限校验

@PreAuthorize:方法执行之前权限校验

@PostAuthorize:方法执行之后权限校验

@RolesAllowed:通过角色名就可以权限校验,这个是Jsr250规范的注解 【忽略】

@Secured:通过权限字段就可以里权限校验,功能和RolesAllowed一样的

 

WebSecurityConfigurerAdapter:SpringSecurity配置适配接口。用于定义SpringSecurity框架配置类规范

UserDetails:SpringSecurity认证信息模型

UserDetailsService:SpringSecurity认证信息服务接口。用于构建

HttpSecurity:配置类里面使用,用于设置SpringSecurity路径拦截规则

PasswordEncoder:SpringSecurity提供的加密算法接口

PasswordEncoderFactories:加密算法构建类,用于构建加密算法

SecurityContextHolder:SpringSecurity容器管理类。用于获得当前容器中的信息,如,当前用户信息。

 

posted @ 2020-07-03 15:21  橘子怪  阅读(662)  评论(0)    收藏  举报