我开发了框架,并在此框架中添加了安全模块。该模块使用具有弹簧安全性的JWT。我重写了Spring的loadUserByUsername方法。一切正常。
@Autowired
private SmartUserRepository smartUserRepository;
@Override
@Transactional
public UserDetails loadUserByUsername(String loginName) throws UsernameNotFoundException {
SmartUser user = smartUserRepository.findByLoginName(loginName);
if (user == null){
throw new UsernameNotFoundException(String.format("Not found user with username '%s'.", loginName));
}
else {
return JwtUserFactory.create(user);
}
}
我开始了一个新项目并实现了此模块。发送请求时,进入此方法,成功创建“ smartUserRepository”,但“ findByLoginName”返回null并抛出UsernameNotFoundException。
当我测试此sql在SQL Developer中能否正常工作时。
Hibernate: select smartuser0_.SmartUserId as SmartUserId1_18_, smartuser0_.createdOn as createdOn2_18_, smartuser0_.deletedOn as deletedOn3_18_, smartuser0_.updateOn as updateOn4_18_, smartuser0_.activated as activated5_18_, smartuser0_.activation_key as activation_key6_18_, smartuser0_.email as email7_18_, smartuser0_.firstname as firstname8_18_, smartuser0_.lang_key as lang_key9_18_, smartuser0_.loginName as loginName10_18_, smartuser0_.password_hash as password_hash11_18_, smartuser0_.reset_date as reset_date12_18_, smartuser0_.reset_key as reset_key13_18_, smartuser0_.surname as surname14_18_ from SmartUser smartuser0_ where smartuser0_.loginName=?
我在调试中评估,smartUserRepository.findAll始终始终返回null。如果我使用smartUserRepositoy(smartUserRepository.save())保存新实体,则休眠会话会一直挂出并不断等待。
这可能导致什么?