[英]Is this a correct way to validate a login?
我想知道以下验证方法是用户可以登录还是不正确,从技术上讲它是可行的,我已经尝试过并且它可以实现我想要的功能,但这是我第一次在Java上进行操作,并且我想确保我没有违反任何重要的约定。
该方法的作用是:
最后; 如果它们匹配并且用户处于活动状态,则可以访问该应用程序。
有什么我想念的吗? 具体来说:
我必须包括任何投掷吗? 用户的详细信息是否容易受到攻击,因为我仅通过电子邮件获得了他的信息,然后进行比较?
方法:
@Override
@Transactional
public void checkUser(LoginRequest lr, LoginResponse response, HttpSession currentSession) {
Usuario loggedUser = loginRepository.findByEmail(lr.getEmail());
isActive = loggedUser.getIsActiveUs();
if (encryptor.match(lr.getPassword(), loggedUser.getPassword())) {
if(isActive){
response.setCode(200);
response.setCodeMessage("User authorized");
//CREATE AND SET THE VALUES FOR THE CONTRACT OBJECT
response.setUserId(loggedUser.getIdUsuario());
response.setFirstName(loggedUser.getName());
response.setLastName(loggedUser.getLastName());
//response.setIdTenant(loggedUser.getIdTenant().getIdTenant());
currentSession.setAttribute("userId", loggedUser.getIdUsuario());
}else{
response.setCode(400);
response.setErrorMessage("User is inactive, please contact your admin.");
}
} else {
response.setCode(401);
response.setErrorMessage("Unauthorized User");
}
}
提前致谢。
我必须包括任何投掷吗?
很有可能是的,至少您的loginRepository
是候选对象之一,因为它可能要通过DB来获取数据(取决于其实现方式)。
用户的详细信息是否容易受到攻击,因为我仅通过电子邮件获得了他的信息,然后进行比较?
请澄清一下,“脆弱”是什么意思? (多个用户使用相同的电子邮件,出于安全原因...)
注释代码:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.