Spring: наследование контроллера с помощью @Controller аннотацию

Я хотел бы смочь создать основной контроллер в своем приложении Spring, которое, среди прочего, определяет, является ли пользователь зарегистрированным пользователем или нет. Этот основной контроллер, после шаблонного шаблона разработки, содержал бы абстрактный защищенный метод, который реализуют подклассы контроллера.

Абстрактный метод передал бы ему экземпляр Пользователя, зарегистрированного или иначе. Однако я понятия не имею, как я сделал бы это, так как кажется, что при помощи контроллеров просто с помощью @Controller аннотации каждый контроллер свободен определить их метод обработки запроса однако, им нравится.

Был бы, создавая своего рода пользовательский класс обслуживания, который вводится в каждый контроллер и используется для проверки пользователя быть одним способом обойти это? Это вызывает вопрос (по крайней мере, для меня), как такой контроллер овладевает HttpServletRequest или объектом Сессии?

Спасибо.

7
задан richever 27 January 2010 в 05:10
поделиться

2 ответа

Я думаю, что Базовый контроллер - это плохая идея, если единственный код, который он должен иметь, это для аутентификации пользователя... вместо этого используйте Spring security. Это лучший вариант.

В качестве альтернативы, вы можете использовать такие методы... взгляните на ссылку Spring...

@Controller("loginController")
public class LoginController {    

   @RequestMapping(value="/login.do", method=RequestMethod.POST)
   public String login(Model model, HttpServletRequest request) {

      String userIdFromRequest = (String)request.getParameter("userId");
      String password = (String)request.getParameter("password");

      boolean verified = ...send userIdFromRequest and password to the user service for 
      verification...

      if (verified){
        request.getSession().setAttribute("userId", userIdFromRequest);
      }

   }          

   //More Methods

}

Это помогло?

-SB

1
ответ дан 6 December 2019 в 14:04
поделиться
  1. Определите абстрактный BaseController, без примечаний
  2. Определите конкретные и абстрактные методы
  3. Вызовите эти методы из подклассов (которые при необходимости аннотируются @Controller).
14
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

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