Проблема:
На сайте есть один контент для людей, которые еще не зарегистрировались, и другой для тех, кто уже зарегистрировался и вошел в систему. Когда я захожу на сайт, меня бросают на страницу / login , как я указал в Spring Security, и эта страница не позволяет мне никуда идти, пока я не войду в систему. Но мне нужно перебросить меня при входе на сайт на главную страницу для незарегистрированных пользователей, где яможет просматривать информацию о событии и т. д., а затем зарегистрироваться или войти в систему. Я почти решил, что добавил в класс безопасности Spring .loginPage ("/ index") вместо ("/ login ") + добавил antMatchers, где он указал все страницы, которые может посетить незарегистрированный пользователь.Но была проблема.Это показано на картинке.Мои стили не работают, он также перестает показывать картинки.
Я добавляю в antMatchers "/ resources / **" но это не помогает.Кроме того, когда я перехожу на вкладку «вход» с главной страницы и пытаюсь войти, введя свой логин и пароль, пишите ошибку
«Метод запроса« POST »не поддерживаетсяorg.springframework.web.HttpRequestMethodNotSupportedException: метод запроса «POST» не поддерживается в «
My Seing Secutiry code перед обновлением -
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Qualifier("userDetailsServiceImpl")
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private SimpleAuthenticationSuccessHandler successHandler;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(userDetailsService);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasAnyRole("ADMIN")
.antMatchers("/runner/**").hasAnyRole("RUNNER","ADMIN")
.antMatchers("/coordinator/**").hasAnyRole("COORDINATOR","ADMIN")
.anyRequest().authenticated().and()
.formLogin()
.loginPage("/login")
.successHandler(successHandler)
.permitAll().and()
.logout()
.permitAll();
}
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers( "/static/**", "/css/**", "/js/**","/error");
}
}
Код My Sping Secutiry после обновления - все остальное
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasAnyRole("ADMIN")
.antMatchers("/runner/**").hasAnyRole("RUNNER","ADMIN")
.antMatchers("/coordinator/**").hasAnyRole("COORDINATOR","ADMIN")
.antMatchers( "/aboutEvent","/marathonCompare","/charityOrgList",
"/calculatorBMI","/calculatorBMR","/learnMore","/registerAsRunner","/becomeSponsor","/",
"/allResults","/interactiveMap","/becomeRunner","/login","/resources/**").permitAll()
.anyRequest().authenticated().and()
.formLogin()
.loginPage("/index")
.successHandler(successHandler)
.permitAll().and()
.logout()
.permitAll();
}
Контроллер входа
@Controller
public class LoginController {
@GetMapping("/login")
public String login(){
return "login/login";
}
}
Страница входа
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin="anonymous" th:href="@{/webjars/bootstrap/4.1.3/css/bootstrap.min.css}">
<link rel="stylesheet" type="text/css" media="all" th:href="@{/css/runnerstyle/register.css}"/>
</head>
<body class="align">
<div class="register-top flex-container">
<form th:action="@{/index}">
<button type="submit" class="register-back">Назад</button>
</form>
<h1><b>MARATHON SKILLS 2018</b></h1>
</div>
<div class="login-middle">
<div class="login-text">
<h2>Форма авторизации<br/></h2>
<h4>Пожалуйста, авторизуйтесь в системе, используя ваш адресс электронной почты<br>
и пароль.
</h4>
</div>
<div th:if="${param.error}" class="alert alert-danger">
<p>Invalid username or password</p>
</div>
<div th:if="${param.logout}" class="alert alert-success">
<p>You've been logged out</p>
</div>
<form th:action="@{/login}" method="post" class="form-input">
<table>
<tr th:class="${param.error} ? 'form-group has-error' : 'form-group'">
<th><h4>Email:</h4></th>
<th style="padding-left: 20px">
<input type="email" id="username" name="username" placeholder="Enter your email address" size="60px" class="input-field">
</th>
</tr>
<tr th:class="${param.error} ? 'form-group has-error' : 'form-group'">
<th><h4>Password:</h4></th>
<th style="padding-left: 20px">
<input type="password" id="password" name="password" placeholder="Enter your email password" size="60px" class="input-field">
</th>
</tr>
<tr>
<th></th>
<th style="padding-right: 13vw;">
<button type="submit" class="login-button">Login</button>
<a href="#" th:href="@{'/'}" class="href">Cancel</a>
</th>
</tr>
</table>
</form>
</div>
<div class="register-bot">
18 дней 8 часов и 17 минут осталось до старта марофона!
</div>
</body>
</html>
Контроллер индекса
@Controller
public class IndexController {
@GetMapping({"/","/index",""})
public String getIndexPage(){
return "index";
}
@GetMapping("/registerAsRunner")
public String registerRunner(){
return "runner/createOrRegister";
}
@GetMapping("/learnMore")
public String getLearnMorePage(){return "learnmore/main";}
}
Как мне решить эту проблему и сделать то, что я имею в виду?Спасибо!