Я некоторое время работал над этой страницей входа, пытаясь заставить ее работать, но я не знаю, как исправить эту последнюю ошибку.
У меня есть алгоритм кодирования bCrypt для моей БД соединена с JDB C, и даже когда я ввожу правильный пароль, я продолжаю перенаправляться на путь ошибки / login? *
JSP Страница:
<form:form method="post" modelAttribute="user"
action="${pageContext.request.contextPath}/processLogin">
<div class="form-group">
<div class="form-label-group">
<label for="inputUser">Username: </label> <input name="username"
type="text" path="username" id="inputUser" class="form-control"
placeholder="Username" required="required" autofocus="autofocus">
</div>
</div>
<div class="form-group">
<div class="form-label-group">
<label for="inputPassword">Password: </label>
<input name="username" type="password" path="password"
id="inputPassword" class="form-control" placeholder="Password"
required="required">
</div>
</div>
<div class="form-group">
<div class="checkbox">
<label> <input type="checkbox" value="remember-me">
Remember Password
</label>
</div>
</div>
<input type="submit" value="Login"/>
</form:form>
Контроллер входа :
@GetMapping("/login")
public String showLoginForm(Model model) {
User user = new User();
model.addAttribute("user", user);
return "login";
}
@PostMapping("/processLogin")
public String processLogin(@ModelAttribute("user") User user, Model model) {
if (userService.findUser(user.getUsername(), user.getPassword()) != null) {
return "/management/dashboard";
} else {
return "/access-denied";
}
}
Пользователь DAO:
public class UserDAOImpl implements UserDAO {
@Autowired
private SessionFactory sessionFactory;
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
@Transactional
public User findUser(String username, String password) {
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
password = bCryptPasswordEncoder.encode(password);
Query<User> theQuery = session.createQuery("from users where username=:username and password=:password",
User.class);
if (theQuery.getSingleResult() != null) {
User user = theQuery.getSingleResult();
session.close();
return user;
} else {
session.close();
return null;
}
}
Настройка безопасности:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource securityDataSource;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(securityDataSource).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/management/**").authenticated().and().formLogin().loginPage("/login")
.loginProcessingUrl("/processLogin").defaultSuccessUrl("/management/dashboard").permitAll();
http.exceptionHandling().accessDeniedPage("/access-denied");
}
@Bean
@Autowired
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}