Запрещенная ошибка при входе в приложение SpringBoot - PullRequest
0 голосов
/ 28 июня 2018

У меня есть базовое приложение SpringBoot. используя Spring Initializer, JPA, встроенный Tomcat, шаблонизатор Thymeleaf и пакет в качестве исполняемого файла JAR. Это мой конфигурационный файл:

@Override
protected void configure(HttpSecurity http) throws Exception {

    http
            .authorizeRequests()
            .antMatchers(publicMatchers()).permitAll()
            .anyRequest().authenticated()
            .and()
        .formLogin().loginPage("/login").defaultSuccessUrl("/menu/config")
        .failureUrl("/login?error").permitAll()
        .and()
        .logout().permitAll();
}

мой шаблон Thymeleaf:

 <form id="loginForm" th:action="@{/login}" method="post">

        <div class="row">
            <div class="col-md-6 col-md-offset-3 text-center">
                <div th:if="${param.error}" class="alert alert-danger alert-dismissible" role="alert">
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">x</span>
                    </button>
                    <p th:text="#{login.error.message}" />
                </div>
                <div th:if="${param.logout}" class="alert alert-success alert-dismissible" role="alert">
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                        <span aria-hidden="true">x</span>
                    </button>
                    <p th:text="#{login.logout.success}" />
                </div>
            </div>            
        </div>

        <div class="input_label"><i class="fa fa-user"></i><input type="text" id="usernameId"   name="username" th:attr="placeholder=#{login.user.placeholder}" value="peris" /></div>
        <div class="input_label"><i class="fa fa-key"></i><input type="password" name="password" value="peris"/></div>

        <input type="submit" value="LOGIN" />

         </form>

и мой контроллер входа в систему:

@Controller
public class LoginController {

    public static final Logger LOG = LoggerFactory.getLogger(LoginController.class);

    /** The login view name */
    public static final String LOGIN_VIEW_NAME = "login/login";

    @RequestMapping(value={ "/", "/login", "/elCor/login"}, method = {RequestMethod.GET})
    public String login() {     

            LOG.info(serverContextPath + "/" + LOGIN_VIEW_NAME);
            return serverContextPath + "/" + LOGIN_VIEW_NAME;

    }
}

Evefything все в порядке с помощью браузера, но когда я использую мобильный телефон, я вхожу в систему, я возвращаюсь с помощью кнопки браузера, затем я пытаюсь войти в систему снова, но у меня есть эта ошибка:

2018-06-28 08:56 [http-nio-5678-exec-2] ERROR c.t.w.c.AppErrorController - getErrorAttributes(request, true) --> {timestamp=Thu Jun 28 08:56:48 CEST 2018, status=403, error=Forbidden, message=Forbidden, path=/elCor/login}   

Я обнаружил такую ​​же проблему в браузере компьютера, но только один раз, и не могу не воспроизвести проблему .. Я пытаюсь ее угадать

1 Ответ

0 голосов
/ 28 июня 2018

Попробуйте добавить токены csrf для запроса входа в систему.

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...