SpringSecurity 怎么在Passwordencoder中获取用户名?

新手上路,请多包涵

SpringSecurity使用了自定义的加密方式,需要用用户名做为盐 请问怎么在自定义的passwordencoder中获取用户登录的用户名呢?

阅读 2.6k
3 个回答

1:自定义provider,你完全自己掌控登陆逻辑
2:默认的DaoAuthenticationProvider,在一次认证流程中,先根据userDetailService获取userDetail,然后再做密码匹配,你可以自己在userDetailService查用户信息时,将你想要的数据丢到threadlocal中,在密码校验时自己取出来
image.png

你可以尝试一下用 SecurityContextHolder 来获取该线程上的 security 上下文。

使用AbstractPasswordEncoder ,定义ByteKeyGenerator ,将 UsernamePasswordAuthticationFilter 注入进去,重写generateKey()为 username 的字节数组。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题