基于内存的多用户支持
1,先准备资源
创建controller
分别在三个controller中建立一些测试路由
2,资源授权的配置
antMatchers()是一个采用ANT模式的URL匹配器,ANT模式使用?匹配任意单个字符,使用*匹配0或任意数量的字符串,使用匹配0或者更多的目录,antMatchers("/admin/api/")相当于匹配了/admin/api/下的所有API,此处我们指定当其必须为ADMIN角色才能访问,/user/api/与之同理,/app/api/下的API会调用permitAll()公开权限,
3,在application.properties中配置用户名和密码以及角色,重启访问/user/api/hello会在页面打印‘hello user’ 但在访问/admin/api/hello会显示下图
页面显示403错误,表示该用户授权失败,也就是说本次访问已经通过认证环节,只是在授权阶段的时候被驳回,
所以我们需要实现一个启用、配置基于内存的用户存储,? 在我们的security配置类中复写configure(AuthenticationManagerBuilder auth)通过inmMemoryAuthentication()方法,
其中withUser()源码
可以看出来返回一个UserDetailsBuilder对象,UserDetailsBuilder部分源码
通过实例调用了这个里面的方法,
在最新的 Spring Security 5发布版本中, 出于安全性的考虑调整了PasswordEncoder的实现与使用策略.推荐使用BCryptPasswordEncoder, Pbkdf2PasswordEncoder, SCryptPasswordEncoder等
增加 PasswordEncoderFactories 类提供一个静态方法 createDelegatingPasswordEncoder()方法, 使用委托方式创建PasswordEncoder的实现
因此在这个项目我们对password也实现自定义的,创建一个类实现PasswordEncoder接口,
原文:https://www.cnblogs.com/xiaoxiaobai0628/p/12295782.html