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