gpt4 book ai didi

java - 尝试在 hibernate/spring 中创建用户登录的东西

转载 作者:行者123 更新时间:2023-11-29 19:03:26 25 4
gpt4 key购买 nike

不确定我编写的代码有多愚蠢,但我正在尝试进行交叉引用我的 mySql 数据库的用户签名。不确定我是否正确地处理了这个问题。感谢您的任何建议。

登录方式

@Repository
public class LoginDAOImpl implements LoginDAO {

private SessionFactory sessionFactory;

@Override
public boolean checkLogin(String userName, String password) {
Session session = sessionFactory.openSession();

boolean userLogin = false;

Query query = session.createQuery("FROM Users u WHERE u.userName=? AND u.password=?");
query.setParameter(0, password);
query.setParameter(1, userName);
List list = query.getResultList();

if ((userName != null) && (list.size() > 0)) {

userLogin = true;
}

return userLogin;
}
}

Controller

@Controller
public class UserController {

private UserDAO userDAO;

@Autowired
private LoginDAOImpl loginDAO;

@Autowired
public void setUserDao(UserDAO userDAO){
this.userDAO = userDAO;
}

@GetMapping("/home")
public String userSignup(Model model, @RequestParam("username")String username, @RequestParam("password") String password){

loginDAO.checkLogin(username, password);
return "user-signin";
}


@GetMapping("/UserForm")
public String userSigninForm(Model model){
model.addAttribute("user", new Users());
return "user-signup";
}

@PostMapping("/saveUser")
public String savedUserForm(@ModelAttribute("user") Users users){
userDAO.save(users);
return "redirect:/home";
}
}

最佳答案

我认为你的代码没有机会工作:

  1. 查询中的参数排序为:用户名、密码;但是您使用错误的索引调用 setParameter(...) 方法。

    Query query = session.createQuery("FROM Users u WHERE u.userName=? AND u.password=?");
    query.setParameter(0, password);
    query.setParameter(1, userName);
  2. 为什么执行查询之后执行用户名验证?

由于您在项目中使用 Spring Framework,因此您可以使用 Spring Security 项目。来自 Spring 的人员已经处理了您要实现的内容。

关于java - 尝试在 hibernate/spring 中创建用户登录的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43690907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com