1、Springsecurity案例1
要求:
Admin账户 所有请求都有权限访问
Useradd账户 只能访问查询和添加订单
2、认证模式
两种:
httpBasic模式 客户端与服务器端做认证
formLogin模式 表单登陆模式
3、编写步骤(这种编码方式在项目中不采用)
第一步:编写配置类,继承WebSecurityConfigurerAdapter
第二步:重写configure方法
参数为HttpSecurtiy http:配置拦截请求资源
参数为AuthenticationManagerBuilder auth:配 置认证用户信息和权限
第三步:两种模式拦截请求
http.authorizeRequests().antMatchers(“/“).
fullyAuthenticated().and().httpBasic();
http.authorizeRequests().antMatchers(“/“).
fullyAuthenticated().and().formLogin();
第四步:httpBasic模式认证用户和权限
auth.inMemoryAuthentication().withUser(“admin”).password(“1234
56”).authorities(“addOrder”);
其中:
authorities(“权限名称”)
第五步:回复以前的模式
因为Springsecurtiy5.0以上,密码是强制需要加密的。
@Bean
public static NoOpPasswordEncoder passwordEncoder() {
return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
}
401:未授权 403:权限不足
4、完成案例1
(1)权限控制
方法:给每一个请求路径分配一个权限名称,账号只要关联了该权限名
称,就有对应的权限
(2)添加用户,给用户绑定权限
5、更改权限不足的页面
(1)编写一个配置类
(2)编写Controller,用来映射”/error/状态码”请求,跳转到相应页面
6、修改formLogin模式的默认登陆页面
(1)配置登录请求
(2)放行登录请求
(3)编写登录请求
(4)登录失败后显示错误提示
两种方法:
1、认证判断是否认证成功,认证失败可跳转到错误页面
2、登录失败后,url地址有error参数,在页面获取即可
7、判断用户是否登陆成功
AuthenticationFailureHandler 认证失败接口
AuthenticationSuccessHandler 认证成功接口
(1)编写两个类,分别实现这两个接口
(2)配置
8、RBAC权限控制
(1)导入三个实体类:用户,权限,角色
(2)导入两个Mapper类
(3)配置数据源信息
(4)实现UserDetailsService类,动态查询数据库验证用户密码
(5)对密码进行加密判断
(6)动态进行用户授权
1、根据用户名称查询用户所有的权限
2、对用户的权限属性进行赋值
3、动态配置关联权限名称与权限地址