在 Spring Security 中仅使用用户名登录
Posted
技术标签:
【中文标题】在 Spring Security 中仅使用用户名登录【英文标题】:Login with only username in spring security 【发布时间】:2019-04-09 00:59:04 【问题描述】:我有一个使用 Spring Security 的 Spring Web 应用程序,我知道正常情况是要求用户提供他们的用户名和密码才能登录,但我希望用户只提供他们的用户名而没有密码才能登录。 我想知道 Spring Security 是否有一个可以流畅地执行此操作的规范,或者我是否必须通过在 html 表单中指定一个密码字段并使用密码值填充该字段然后将该字段设为隐藏字段来进行操作。这样用户就不会看到密码字段,因此当他输入他的用户名并单击提交时,系统将提交两个值并让他登录。 也欢迎任何更好的快速修复。 我的想法...
<input type="text" name="username" required="required"/>
<input type="hidden" name="password" value="passwordValue"/>
【问题讨论】:
@CristianoBombazar ,here... 春季版 4.3.10.RELEASE 春季安全版 5.0.0.RELEASE 【参考方案1】:当我在寻找时,我没有找到一个漂亮的解决方案,所以,我做了类似你说的事情。就我而言,我这样做了:
@Bean
public PasswordEncoder passwordEncoder()
return NoOpPasswordEncoder.getInstance();
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception
auth.userDetailsService(service).passwordEncoder(passwordEncoder());
...当我调用 URL 进行身份验证时,我将密码传递为空。
【讨论】:
您的回答看起来很不错,但我使用的是 XML 配置。你能帮我翻译一下吗? 我从来没有设置过 XML,对不起。但是,请参阅此链接 ***.com/questions/17444258/… 中的其中一个答案。 @AdinduStevens 第二个,他教如何在 XML 中设置。将 BCryptPasswordEncoder 更改为 NoPasswordEncoder,应该可以正常工作。 @Cristiano Bombazar 你混淆了 NoPasswordEncoder 和 NO PASSWORD。 NoPasswordEncoder 不会编码,但登录时仍然必须设置密码 @thanhdung0312 我没有混淆,但是在我们的场景中,这是一种方法。当我使用空密码的 BCryptEncoder 时,它不起作用。我不得不更改为 NoPasswordEncoder。正因为如此,一个类似的案例,我发布了这个“答案”。我认为这不是最好的方法,但是,我无法以更好的方式做到这一点。以上是关于在 Spring Security 中仅使用用户名登录的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security 中仅使用自定义 UserDetailsService 禁止 403 [重复]
是否可以在 Spring Security 中仅使用刷新令牌请求访问令牌 oauth2?没有基本身份验证?
如何在我的 Spring Boot Security OAuth2 应用程序中仅为某些类启用 OAuth2?