Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

j_security_checkで認証後に任意のページに遷移させたい

お世話になります。

j_security_checkで認証成功後に任意のページに遷移さ
せたいのですがやり方がわからず困っています。

通常であればアクセス制限されたページにアクセスしよ
うとした時に、認証前であればログインページに遷移
し、j_security_checkで認証成功後に最初に要求のあっ
たページに遷移されますが、これを、任意のページに遷
移させたいのです。

遷移先は予めわかっているので、j_security_checkに
POSTパラメタとして渡したり、何らかの変数にセットす
ることは可能ですが、どのようにしてj_security_check
に遷移先を教えれば良いのか分からず困っています。

そもそもこんなことはできないのでしょうか?
もしやり方があるのでしたら教えてください。

※@itの会議室で質問したのですがまったくレスがつか
ないのでこちらで再質問させて頂きました。
マルチポストですがご容赦下さい。

3

回答

91739

閲覧

3件の回答

評価

0

使ったことないんで、話半分で。
そもそもj_security_checkは、どこかのページをリクエストし
たら強制的にlogin.jspへリダイレクト、認証成功後に元のペー
ジへリダイレクトする仕組みらしい。
なので「任意のページ」という要求自体が意味不明。

j_security_checkが元のページを記憶する方法はアプリサーバ
に依存するらしい。
wasではcookieを使ってるとのこと。
login.jspでcookieを上書きしたら、そこへリダイレクトするか
もね。

評価

0


ご回答ありがとうございます。
書き忘れてましたが環境は
apache2.2.3
tomcat6
struts1.3.10です。

apacheとtomcatはAJPで連携させています。
またapacheが見せるパスとtomcatのパスが違うため
apache側でパスの書き換えをしています。

※http://host1/aa/ http://host1/bb/ を
ajp://localhost:8009/app/に転送。

【httpd.conf抜粋】
<Location /aa/>
ProxyPass ajp://localhost:8009/app/
</Location>

<Location /bb/>
ProxyPass ajp://localhost:8009/app/
</Location>
    
今回の問題はFORM認証後に
http://host1/aa/xxx,http://host1/bb/xxxではなく
/app/xxxに飛ぼうとするののを解決したかったのです、
tomcatのアプリケーションには元のパス情報(例:
http://host1/aa)を
渡しているのでこの情報を元に遷移先を変更したいと思
いました。

ログイン用のjspで環境変数等を調べたところ、
org.apache.struts.globals.ORIGINAL_URI_KEYに戻り先
らしきものが入っていたので
これを書き換えれば良いのではと思いJSPに
<%
request.setAttribute("org.apache.struts.globals.OR
IGINAL_URI_KEY", "http://host1/aa/Top.do");
%>
としてみましたが、「Internal Server Error」でログ
イン画面すら表示されなくなってしまいました。
「Internal Server Error」の時、tomcatのログには何
も出力されませんでした。


JSPでsetAttributeをしたのがまずかったのか、コード
が間違っているのかは調査中です。

評価

0

リバースプロキシでぐぐるといいよ

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。