Jhipster 使用电子邮件而不是用户名登录
Posted
技术标签:
【中文标题】Jhipster 使用电子邮件而不是用户名登录【英文标题】:Jhipster login with email instead of username 【发布时间】:2019-03-25 21:03:45 【问题描述】:我使用 Jhipster 创建应用程序。默认情况下,它使用用户名+密码的组合登录。我想创建电子邮件+密码登录,这样我就可以使用户名不唯一。最好的方法是什么?
我正在使用 JWT。
【问题讨论】:
复制:***.com/questions/28739550/… 编辑了我的帖子。它没有重复,因为我使用的是 JWT 而不是 Oauth2 github.com/jhipster/generator-jhipster/issues/… 【参考方案1】:默认情况下,登录字段用于将用户登录到应用程序。但是对于最后一个 JHipster 版本(我不确定它是从哪个版本开始实施的),您可以通过电子邮件记录用户。
在 DomainUserDetailsService.java 中:
public UserDetails loadUserByUsername(final String login)
log.debug("Authenticating ", login);
if (new EmailValidator().isValid(login, null))
return userRepository.findOneWithAuthoritiesByEmail(login)
.map(user -> createSpringSecurityUser(login, user))
.orElseThrow(() -> new UsernameNotFoundException("User with email " + login + " was not found in the database"));
String lowercaseLogin = login.toLowerCase(Locale.ENGLISH);
return userRepository.findOneWithAuthoritiesByLogin(lowercaseLogin)
.map(user -> createSpringSecurityUser(lowercaseLogin, user))
.orElseThrow(() -> new UsernameNotFoundException("User " + lowercaseLogin + " was not found in the database"));
但是登录仍然是唯一的,就像邮件一样,名字和姓氏不是。即使您有旧版本的 JHipster,我也很确定您可以添加此代码以支持电子邮件和登录身份验证。
使用 JWT 和最新的 JHipster 版本进行测试!
【讨论】:
问题是我需要登录不是唯一的,如果我使用用户名删除登录,社交网络将无法正常工作 我不确定您为什么要这样做,但没关系。如果您想登录不是唯一的,您应该删除 sql 约束并更新 user.java 实体中的 JPA 注释。如果应用程序已经在某个环境中运行,请务必创建一个新的更改日志,而不是修改原始日志。 好吧,我想让人们拥有相同的用户名。以上是关于Jhipster 使用电子邮件而不是用户名登录的主要内容,如果未能解决你的问题,请参考以下文章
用户使用电子邮件而不是用户名登录。问题:通过电子邮件但检查用户名
ember简单auth用rails设计用户名而不是电子邮件?