Когда я перенаправляю успешный вход на контроллер, не получаю правильный маршрут в контроллере - PullRequest
0 голосов
/ 21 января 2019

У меня есть следующий код для перенаправления в spring-security:

public class FlowSuccessHandler implements AuthenticationSuccessHandler{

    private RedirectStrategy redirect = new DefaultRedirectStrategy();

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
            Authentication authentication) throws IOException, ServletException {

        Set<String> roles = AuthorityUtils.authorityListToSet(authentication.getAuthorities());

        if(roles.contains("ROLE_ADMIN")) {
            redirect.sendRedirect(request, response, "admin/");
        }else {
            redirect.sendRedirect(request, response, "user/");
        }

    }

}

В моем контроллере для получения этого запроса есть следующее:

@Controller
@RequestMapping(value="/admin")
public class AdminController {

    @RequestMapping(value= {"/"} ,method=RequestMethod.GET)
    public String adminView(Model model)throws Exception{
        return "admin/index";
    }

}

когда этот контроллер отправляет ответ храма, у меня появляется следующая ошибка:

Estado HTTP 404 ? Not Found
Tipo Informe de estado

mensaje /admin/WEB-INF/views/admin/index.jsp

descripción El recurso requerido no está disponible.

Apache Tomcat/8.5.34

Я не знаю, как удалить это в начале маршрута / admin / нужно только /WEB-INF/views/.....

------ UPDATE ----- У меня есть такой видоискатель.

@Bean
    public ViewResolver internalViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

1 Ответ

0 голосов
/ 21 января 2019

Если вы хотите, чтобы ViewResolver использовал другой префикс, вы должны изменить свою конфигурацию. Это должно выглядеть так, как показано ниже:

@Bean
public ViewResolver configureViewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/"); // instead of /admin/WEB-INF/views
    viewResolver.setSuffix(".jsp");
    return viewResolver;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...