ModelAndView Thread-Saftey Spring Boot веб-приложение

Является ли использование ModelAndView таким образом "потокобезопасным"? Компонент UserToken, передаваемый конструктору, имеет сессионную область и прокси, поэтому каждый пользователь должен иметь доступ к своему собственному токену, верно? Или использует один и тот же ModelAndView для всех запросов, каждый раз перезаписывая UserToken для каждого пользователя, что, возможно, приводит к тому, что пользователь A видит токен пользователя B?

@Controller
public class ViewController {
    private final UserToken userToken;
    private final ModelAndView mav;

    @Value("${redirect.url}")
    String redirectUrl;

    @Autowired 
    public ViewController(UserToken userToken) {
        this.userToken = userToken;
        this.mav = new ModelAndView();
    }

    @RequestMapping("/")
    public ModelAndView defaultView() {
        return getModelAndView("home");
    }

    @RequestMapping("/entryPoint")
    public ModelAndView accessDenied(@RequestParam(required=false) String token) {
        userToken.deserialize(token);
        mav.addObject("userToken", userToken);
        return getModelAndView("redirect:/");
    }

    /**
     * Handle redirect if the userToken is invalid
     * @param viewName The view to map
     * @return the ModelAndView
     */
    private ModelAndView getModelAndView(String viewName) {
        if (userToken.isValid()) {
            mav.setViewName(viewName);
        } else {
            mav.setViewName("redirect:" + redirectUrl);
        }
        return mav;
    }

}

Даже не уверен, как проверить безопасность потоков в этом сценарии, поэтому любые знания будут оценены (методы, инструменты и т. Д.).

0 ответов

Другие вопросы по тегам