3

ユーザーが保護されたリソースにアクセスしようとすると、login.jspにリダイレクトするJavaEEセキュリティレルムを実装しました。

  • ユーザーが保護されたURLに移動したいとします-http://mywebapp/shopping_cartこれはShoppingCartServletにマップされています
  • 彼らはログインしていないので、Glassfishはlogin.jspにそれらを指示します
  • 次に、ユーザー名とパスワードを入力して[ログイン]をクリックすると、情報がPOSTされます。http://mywebapp/j_security_check
  • 正しい詳細を入力すると、URLを処理するサーブレットにリダイレクトされますhttp://mywebapp/shopping_cart

ここで、データベースからユーザーの詳細を取得したいのですが、リダイレクト要求にパラメーターがない場合はどうすればよいですか?

それらのユーザー名はに送信されましhttp://mywebapp/j_security_checkたが、j_security_checkが行うリダイレクト要求にはパラメーターがありませんhttp://mywebapp/shopping_cart。では、ユーザーがログインした後、ユーザーの詳細にアクセスするためにどのような方法が使用されますか?

4

1 に答える 1

4

データベースからの関連オブジェクトがセッションに存在しないときにユーザーがログインしているかどうかをチェックするフィルターを作成します。User次に、そのデータをロードしてセッションに入れます。

基本的に、

@WebFilter("/*")
public class UserFilter implements Filter {

    @EJB
    private UserService service;

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        String remoteUser = request.getRemoteUser();

        if (remoteUser != null) {
            HttpSession session = request.getSession();

            if (session.getAttribute("user") == null) {
                User user = service.find(remoteUser);
                session.setAttribute("user", user);
            }
        }

        chain.doFilter(req, res);
    }

    // ...
}
于 2013-02-07T18:41:26.453 に答える