У меня есть веб-приложение, в котором определенный URL/newPost должен быть доступен только одному пользователю, администратору. При попытке перейти к '/ newPost', пользователь должен быть перенаправлен на страницу входа, где он должен подтвердить свою личность как admin.
Это все работает, за исключением случаев, когда пользователь заполняет форму входа в систему, форма отправляется каждый раз в '/ login'. Я в настоящее время не понимаю, почему он отправляет на «/ login» вместо пути, который я перенаправляю на использование листьев тимьяна: th:action="@{/newPost}"
Spring Security для одного пользователя
TLDR; Я продолжаю перенаправляться в/login после отправки формы входа. Я использую Spring boot, Spring security и thymeleaf.
Контроллер:
/*Keeps getting called*/
@RequestMapping(value="/login", method=RequestMethod.GET)
public String login(Model model)
{
model.addAttribute("lc", new LoginCredentials());
System.out.println("Login controller");
return "login";
}
/*RequestMapping I want to be called*/
@RequestMapping(value="/newPost", method = RequestMethod.GET)
public String isLoggedIn(@ModelAttribute LoginCredentials lc, Model model)
{
if(lc.isAdmin())
{
System.out.println("lc is admin");
model.addAttribute("bp",new BlogPost());
return "newPost";
} else
{
System.out.println("lc is not admin");
return "login";
}
}
Войти Форма: Конфигурация
<form class="form-signin" th:action="@{/newPost}" th:object="${lc}" method = "post">
<h2 class="form-signin-heading">Please sign in</h2>
<label for="inputEmail" class="sr-only">Username</label>
<input type="text" id="username" class="form-control" th:field="*{inputUsername}" placeholder="Username" required="required" autofocus="autofocus" />
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="password" th:field="*{inputPsswd}" class="form-control" placeholder="Password" required ="required" />
<button class="btn btn-lg btn-primary btn-block" type="submit" style="background-color:#F6358A;">Sign in</button>
</form>
Безопасность:
httpSecurity
.authorizeRequests()
.antMatchers("/","/videos","/BlogPost","/index","/aboutUs").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
Ваша форма почтовой системы и URL-адреса этой формы для newPost. Можете ли вы добавить более подробную информацию об этом методе? Кроме того, форма, которую вы публикуете, является формой входа в систему, поэтому, когда вы настраиваете Spring Security для обработки информации для входа? –
Потому что вы не используете Spring Security, но работаете вокруг ... –
@ M.Deinum Спасибо за ваш комментарий. Это побудило меня прочитать дополнительную документацию Spring Security, изучить ее, а затем по-настоящему устранить проблему. – Turtle