8

Springアプリで、ユーザーが登録ユーザーかどうかを判断するベースコントローラーを作成できるようにしたいと思います。このベースコントローラーには、テンプレートデザインパターンに従って、コントローラーサブクラスが実装する抽象保護メソッドが含まれます。

抽象メソッドは、登録されているかどうかに関係なく、Userのインスタンスを渡します。ただし、純粋に@Controllerアノテーションを使用してコントローラーを使用することにより、各コントローラーは自由に要求処理メソッドを自由に定義できるように見えるため、これをどのように行うかはわかりません。

各コントローラーに注入され、ユーザーの検証に使用されるある種のユーザーサービスクラスを作成することは、これを回避する1つの方法でしょうか?これは(少なくとも私にとっては)そのようなコントローラーがHttpServletRequestまたはSessionオブジェクトをどのように取得するのかという疑問を投げかけます。

ありがとう。

4

3 に答える 3

15
  1. abstract BaseController注釈なしで、を定義します
  2. 具体的で抽象的な方法を定義する
  3. @Controller必要に応じて、サブクラス(注釈付き)からこれらのメソッドを呼び出します。
于 2010-01-27T07:27:54.733 に答える
1

Base Controller に必要なコードが UserAuthentication だけである場合、Base Controller はお勧めできません。代わりに 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 に答える