我想知道以下方法验证用户是否可以登录是正确的,从技术上讲它是有效的,我已经尝试了它并且它做了我想要的但是这是我第一次在Java上这样做我想确保我没有违反任何重要的约定。
这种方法的作用是:
最后;如果它们匹配且用户处于活动状态,则可能 访问应用程序。
我有什么遗失的吗? Especifically:
我是否必须包括任何投掷;抓住? 用户的详细信息是否容易受到攻击,因为我只通过他的电子邮件获取了他的信息然后进行比较?
方式:
@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");
}
}
提前致谢。
答案 0 :(得分:0)
我是否必须包括任何一次投掷;抓住?
很可能是的,至少你的loginRepository
是候选人之一,因为它可能会转到数据库来获取数据(取决于它是如何实现的)。
用户的详细信息是否容易受到攻击,因为我只用他的电子邮件获取了他的信息然后进行比较?
请澄清,“弱势”是什么意思? (多个用户使用相同的电子邮件,安全原因......)
代码备注: