2

私の Web アプリケーションには、ユーザーがログインするかどうかを決定できるチェックアウト プロセスがあります。プロセスは同じですが、ログインすると、チェックアウト プロセスのデータが事前に入力されます。

ショッピングカート --> ログインあり/なしで続行 --> チェックアウト

コンテナ管理ログインで特定のページを「保護」する方法は知っていますが、「オプションのログイン」を実装するにはどうすればよいですか? 私は長い間インターネットを検索しましたが、残念ながら必要なものではなく、従来のログイン方法しか見つかりませんでした。

アクション メソッドの戻り値にクエリ文字列を追加する方法はありますか?

public  String withLogin () {
   return "checkout.xhtml?login=true";
}

public String noLogin() {
   return "checkout.xhtml";
}

どんな助けやアイデアも大歓迎です。


解決策:

コロッサスの答えに基づいて、解決策を見つけました。認証方法は私が必要としていたものでしたが、見つかりませんでした。

そこで、前述のように ManagedBean から返す URL パラメータ login=true に基づいて認証を行う WebFilter を実装しました。

@WebFilter("/order/checkout.xhtml")
public class LoginFilter implements Filter{

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        if(("true").equals(req.getParameter("login"))) {
            req.authenticate((HttpServletResponse) response);
        }       
        chain.doFilter(request, response);      
    }

    // init and destroy Method
}

kolossus は、URL に「ログイン オプション」を表示すべきではないと言いましたが (私は部分的に同意します)、ユーザーは自分で (別のボタンをクリックすることで) ログインするかどうかを決定できるため、とにかくこのように使用しました。それはセキュリティの問題ではありません。

4

2 に答える 2