#spring #spring-mvc #spring-security
#весна #spring-mvc #spring-security
Вопрос:
Когда я вхожу в систему с помощью spring security, я перенаправляюсь на student / list, но как только я выхожу из системы и снова пытаюсь получить доступ к ссылке, я получаю
type=Internal Server Error, status=500
Invalid property 'principal.username
Он не находит действительное имя пользователя, но мне нужно снова получить доступ к странице входа, когда я выхожу из системы, это мой код jsp
<form:form action="${contextPath}/authenticateTheUser" method="POST">
<c:if test="${param.error !=null}">
<i class="failed">Sorry! You have entered ivalid username/password</i>
</c:if>
<c:if test="${param.logout !=null}">
<i class="logout">You Have Been Logged Out</i>
</c:if>
<table>
<tr>
<td><label>User Name</label></td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" name="Login"></td>
</tr>
</table>
</form:form>
функция выхода из системы была добавлена в мой список-student, но как только я выхожу из системы, я ввожу свои учетные данные, и это дает мне белую метку 404, но когда я перехожу к student / list после получения этой ошибки, я вошел в систему как правильный пользователь, вот моя страница list-student
<form:form action="${contextPath}/logout" method="POST">
<input type="submit" value="Log Out">
</form:form>
ContextPath ссылается на мой код настройки
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/student").hasRole("EMPLOYEE").antMatchers("/student/showFormForAdd/**")
.hasRole("ADMIN").antMatchers("/student/addAddress/**/student/showFormForAdd/**").hasRole("MANAGER")
.and().formLogin().loginPage("/login").loginProcessingUrl("/authenticateTheUser").permitAll().and()
.logout().permitAll();
}
В целом, мне нужно иметь возможность войти в систему и напрямую перенаправляться на мой список учеников, и если я выхожу из системы и снова вхожу в систему, мне нужно иметь ту же функциональность, а не получать белую метку 500 или свойство компонента ‘principal.username’ не читается вот мой код контроллера
@Controller
@RequestMapping("/student")
public class StudentController {
@GetMapping("/list")
public String listStudents(Model model) {
List<Student> students = studentService.showAllStudents();
model.addAttribute("students", students);
return "list-students";
}
}
мое сопоставление входа в систему
@Controller
public class LoginController {
@RequestMapping("/login")
public String showMyLoginPage() {
return "login-form";
}
}
примечание мой контроллер входа в систему имеет значение по умолчанию /login
, но my /list
для my list-students
имеет сопоставление запросов на уровне класса с именем /student