8

我希望能够在我的 Spring 应用程序中创建一个基本控制器,除其他外,它可以确定用户是否是注册用户。该基本控制器遵循模板设计模式,将包含控制器子类将实现的抽象受保护方法。

抽象方法将传递给它一个用户实例,注册或其他。但是,我不知道我将如何做到这一点,因为似乎通过纯粹使用 @Controller 注释来使用控制器,每个控制器都可以自由地定义他们喜欢的请求处理方法。

创建某种注入到每个控制器中并用于验证用户的用户服务类是解决此问题的一种方法吗?这就引出了一个问题(至少对我而言)这样的控制器如何获得 HttpServletRequest 或 Session 对象?

谢谢。

4

3 回答 3

15
  1. 定义一个abstract BaseController,没有注释
  2. 定义具体和抽象方法
  3. 需要时从子类(用 注释)调用这些方法@Controller
于 2010-01-27T07:27:54.733 回答
1

我认为基本控制器不是一个好主意,如果它唯一的代码是用于 UserAuthentication ......而不是使用 Spring 安全性。这是最好的选择。

或者,您可以使用这样的方法......看看 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

于 2010-01-27T05:48:03.123 回答
0

基本问题是注释引导不是多态的。我发现这篇论文很有用:http ://sanguinecomputing.com/design-pattern-for-hierarchical-controller-organization-with-annotational-configuration-spring-mvc-3/

于 2013-04-28T19:53:59.077 回答