Свойство bean-компонента «Principal.username» недоступно для чтения или имеет недопустимый метод получения, когда я выхожу из системы и пытаюсь перейти к ученику / списку - PullRequest
1 голос
/ 18 апреля 2019

Когда я вхожу, используя Spring Security, я перенаправляюсь в список студентов / учеников, но как только я выхожу и пытаюсь снова получить доступ к ссылке, я получаю

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>

функция выхода из системы была добавлена ​​в мой список учеников, но как только я вышла из системы, я ввожу свои учетные данные, и это дает мне белую метку 404, но когда я иду в ученик / список после того, как я получаю эту ошибку, я регистрируюсь как правильный пользователь, вот мой список-страница студента

<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 или свойство Bean '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, но мой /list для моего list-students имеет отображение запросов на уровне класса с именем /student

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...