Безопасность Spring, анонимная и аутентифицированная для одной и той же конечной точки - PullRequest
0 голосов
/ 01 июля 2019

У меня есть /home конечная точка:

@RequestMapping(value = "/home", method = RequestMethod.GET)
    public ModelAndView getLoginPage(
            HttpServletResponse response,
            @RequestParam(value = "msg", required = false)  String message{

            modelView.setViewName("landingpage/home");


        return modelView;
    }

возвращает html, который также содержит логин и панель инструментов для зарегистрированных пользователей. Итак, для аутентифицированных пользователей он открыт:

http
        .authorizeRequests()
        .antMatchers("/", "/home", "/book/**").authenticated()

, но также и после неудачного входа в систему, он должен быть открыт, потому что он отправляет сообщение в конечную точку / home:

public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception)
....
     String exceptionMessage = exception.getMessage();
        String msgParam = "?msg=" + EncryptionUtil.encode(exceptionMessage);
        response.sendRedirect(/home + msgParam);

Так что я хочу, для

localhost:8080/home -> should be open to onlyauthenticated
localhost:8080/home?msg=asdsada -> should be open to all users

Я пытался добавить это

  .antMatchers("/reset-password", "/login", "/home/**").anonymous()

Итак, весь класс стал таким:

        .antMatchers("/", "/home", "/deposit/**").authenticated()
         .antMatchers("/reset-password", "/login", "/home/**").anonymous()

но когда я иду к

http://localhost:8080/home?msg=BAcQreS-4_K54e3jWSksds

не может быть, потому что не разрешено для неаутентифицированных.

Что я могу сделать?

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