当前位置: 首页 > 面试题库 >

当登录页面除了用户名和密码之外还有更多字段时,如何实现Spring安全?

宣高朗
2023-03-14
问题内容

我有一个登录页面,用户需要在其中输入以下信息VIN号,电子邮件,邮政编码和accessCode,它们将从不同的应用程序获取。

因此,要验证用户,我需要自定义UserDetailsService类中的所有信息,然后将调用一个过程来验证用户身份。

但是我看到当我实现UserDetailsService下面的代码时

@Component
 public class LoginService implements UserDetailsService {
@Autowired
LoginStoredProcedureDao loginStoredProcedureDao;

public Map<String, Object> verifyLogin(LoginDetails details) {
    return loginStoredProcedureDao.verifyLogin(details);

}
@Override
public UserDetails loadUserByUsername(String username)
        throws UsernameNotFoundException {
    // TODO Auto-generated method stub
      //verifyLogin();
    return null;
}

}

loginDetails对象如下所示

public class LoginDetails {
String vin;
String email;
String zipcode;
String accessCode;
}

在上述情况下如何使用spring安全。用户在这里需要提供所有信息以验证自己。


问题答案:

首先,我将以不同的方式解决你的问题。我会进行多步骤身份验证。第一个是使用spring security的默认模型的传统用户名/密码登录。第二步是显示另一个表单,用户必须填写该表单以提供身份验证的其他详细信息,你的应用程序要强制执行此操作。

无论如何,如果你想继续自定义spring安全模型以在一个步骤中询问有关登录的更多详细信息。请遵循@Petr中上一个答案中的步骤参考。然后要访问你的UserDetailsS​​ervice类中的会话属性,请使用Spring提供的http://static.springsource.org/spring/docs/2.0.8/api/org/springframework/web/context/request/RequestContextHolder.html类。

你可以访问currentRequestAttributes(),它返回一个RequestAttributes对象。你可以查询RequestAttributes对象,以从所需范围中获取所需属性。

注意:这是静态方法,这意味着它对单元测试不友好。

你还可以将RequestAttributes转换为ServletRequestAttributes是否要访问基础HttpServletRequest

希望这可以帮助。



 类似资料:
  • 本文向大家介绍Javascript实现登录记住用户名和密码功能,包括了Javascript实现登录记住用户名和密码功能的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • 我在我的应用程序中使用Spring MVC,登录是通过Spring Security验证的。我有以下两个方法在我的类,公共User细节loadUserByUsername(String userName)抛出UsernameNotFoundExc0019,DataAccessExc0019{ 我对Spring比较陌生,对Spring的安全性部分不太了解。在我的文件,我有以下内容, 我的登录表单的操

  • 当此用户登录系统时,我想更改用户名。我实现了自己的加密算法,但无法获得真正的密码来进行新的认证并将其放入

  • 我最近才开始使用firebase工作,我似乎不知道如何让用户用电子邮件、用户名和密码注册,这样以后用户就可以只用用户名和密码登录,我可以用电子邮件和密码登录,但我不知道如何用用户名和密码登录,简单的解释是赞赏的,因为我是新的,谢谢!

  • 我已经安装了Jenkins ver。OSX 10.11.3上的1.653,使用标准安装程序并添加git插件。我试着从github为公共项目创建一个作业,它成功了。现在,我试图创建私人回购作业使用用户名和密码,但它总是失败。这是日志: 在工作区中构建/Users/Shared/Jenkins/Home/workspace/MyProject git rev-parse --is-inside-wor

  • 问题内容: 我需要输入USER表的USER_ID字段作为另一个表中的外键。因此,我认为我需要在用户登录时启动一个会话。我很难让它在任何地方回显。我能够启动一个会话,该会话允许我回显USERNAME,但无法将其复制为ID。 请帮忙吗?我的处理代码如下。我还粘贴了本节,我暂时尝试对其进行回显以进行测试。 处理脚本: 我希望USER_ID出现在哪里: 问题答案: 使用FETCH_ASSOC而不是FETC