安全服务类的loadUserByUsername函数正确接收用户名,但是当使用用户名通过用户Dao接口的findByUsername(username)函数从用户表中获取用户时,它未获取正确的使用,而是返回一个随机值例如“ User @ 27387662”。
j 休眠:从用户user0_中选择user0_.id作为id1_1_,user0_.email作为电子邮件2_1_,user0_.enabled被启用3_1_,user0_.password作为密码4_1_,user0_.username作为username5_1_,其中user0_.username =? 休眠状态:选择userroles0_.user_id作为user_id3_2_0_,userroles0_.user_role_id作为user_rol1_2_0_,userroles0_.user_role_id作为user_rol1_2_1_,userroles0_.role_role_id作为role_rol2_2_1_,userroles0_1角色_id_role,从角色1_role1_id_1,id_role_1,id_role_1,id_role_1,id_role_0, userroles0_.role_role_id = role1_.role_id上的角色role1_,其中userroles0_.user_id =? com.invoice.domain.User@27387662
j是用户名,
com.invoice.domain.User@27387662由findByUsername(username)函数返回,
问题出在哪里?
在用于检查是否接收到用户名的函数中,使用了println函数,该函数将打印名称以及由findByUsername(username)返回的用户。
User Security Service:
____________________
package com.invoice.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import com.invoice.dao.UserDao;
import com.invoice.domain.User;
@Service
public class UserSecurityService implements UserDetailsService {
/** The application logger */
private static final Logger LOG = LoggerFactory.getLogger(UserSecurityService.class);
@Autowired
private UserDao userDao;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
System.out.println(username);
User user = userDao.findByUsername(username);
System.out.println(user);
if (null == user) {
LOG.warn("Username {} not found", username);
throw new UsernameNotFoundException("Username " + username + " not found");
}
System.out.println(user);
return user;
}
}
UserDao
_______
package com.invoice.dao;
import org.springframework.data.repository.CrudRepository;
import com.invoice.domain.User;
public interface UserDao extends CrudRepository<User, Long> {
User findByUsername(String username);
User findByEmail(String email);
}