Viamos
@Viamos
Человек, который любит пиццу

Как передать объект другому запросу?

Проблема заключается в том что нужно использовать один запрос на несколько случай жизни
Не понимаю как сделать связки между ними
Если брать запрос: localhost:8080/ то он должен проверить была ли сделана авторизация, если нет, то делает redirect, если было сделано, то он показывает разметку, в котором уже находятся данные объекта пользователя.

Так же было не понятно что после кнопки авторизации, передача объекта другому запросу с помощью redirect. По коду выглядит все так

@GetMapping("/")
    public String mainPage(Model model) {
        return "index";
    }

// хочу совместить их
    @GetMapping("/admin")
    public ModelAndView getAdminPanel(ModelMap model) {
        UserDto userDto = new UserDto(
                1L, "Sanzhar", "Zhanibekov", Gender.MALE, "root", TypeUser.EMPLOYEE
        );

        model.addAttribute("user", userDto);
        return new ModelAndView("home", model);
    }

@GetMapping("/login")
    public ModelAndView authPage(ModelMap model) {
        model.addAttribute("form", new LoginForm());
        return new ModelAndView("authorization", model);
    }

    @PostMapping("/auth")
    public String authorize(@ModelAttribute LoginForm loginForm, Model model) {
        User user = userDao.findUserByEmailAndPassword(
                loginForm.getEmail(),
                loginForm.getPassword()
        );
        if (user == null)
            return "redirect:/login";
        model.addAttribute("userDto", new UserConverter().convertToDto(user));
        return "redirect:/home";
    }
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Если брать запрос: localhost:8080/ то он должен проверить была ли сделана авторизация, если нет, то делает redirect, если было сделано, то он показывает разметку, в котором уже находятся данные объекта пользователя.


Вот, например небольшой сниппет:
@GetMapping("/admin")
    public String dashboard() {
        // Проверка авторизации пользователя
        boolean isAuthorised = SecurityContextHolder.getContext().getAuthentication() != null &&
                SecurityContextHolder.getContext().getAuthentication().isAuthenticated() &&
                !(SecurityContextHolder.getContext().getAuthentication() instanceof AnonymousAuthenticationToken);
        if (isAuthorised) {
            return "redirect:/admin/dashboard";
        }
        return REDIRECT_ADMIN_LOGIN;
    }


Так же было не понятно что после кнопки авторизации, передача объекта другому запросу с помощью redirect. По коду выглядит все так

В это случае вместо addAttribute() нужно использовать addFlashAttribute()
Подробности тут - https://stackoverflow.com/questions/14470111/sprin...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы