- - PR -
JSF Tomcatでフォーム認証
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-23 23:08
こんばんは、
Tomcatでフォーム認証させたいのですが、 JSFですと、 真っ白な画面へ遷移します。 ---- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD> <BODY></BODY></HTML> ---- web.xmlの設定は、 ---- <!-- Define a Security Constraint on this Application --> <security-constraint> <web-resource-collection> <web-resource-name>User Auth</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>myrole</role-name> </auth-constraint> </security-constraint> <!-- Define the Login Configuration for this Application --> <login-config> <auth-method>FORM</auth-method> <realm-name>User Auth</realm-name> <form-login-config> <form-login-page>/login.jsf</form-login-page> <form-error-page>/error.jsf</form-error-page> </form-login-config> </login-config> <security-role> <role-name>myrole</role-name> </security-role> ---- といった具合です。 何かおかしいでしょうか? | ||||||||||||
|
投稿日時: 2005-11-24 09:38
同じ現象か分かりませんが,SunのJava Forumの方にwelcome-fileにaaa.jsfというファイル
名をを指定できない,というトピックが出ていました. そちらの方はTomcatのバグということです. 回避策としてはいったんbbb.jspで受けてそこからjsp:forwardでaaa.jsfを呼べばよいらしいです. form-login-pageとform-error-pageで同じことを試してみてはいかがでしょうか? | ||||||||||||
|
投稿日時: 2005-11-26 17:17
すいませんでした。
画面が真っ白になるのは、例外がスローされていたためでした。 改めて... JSFでTomcatのフォーム認証させたいのですが、 ---- <h:inputText id="j_username" value="#{user.userId}" required="true" /> <h:inputSecret id="j_password" value="#{user.password}" required="true" /> ---- としても、<input>のnameは、 login:j_username login:j_password となってしまうので、 ---- <f:verbatim><input type="text" name="j_username" /></f:verbatim> <f:verbatim><input type="password" name="j_password" /></f:verbatim> ---- としています。 さらに、 ---- <h:form id="login"> : <h:commandButton id="loginBtn" type="submit" value="ログイン" action="j_security_check"/> : </h:form> ---- としても、<form>のactionは、 /login.jsf となってしまうため、 ---- <f:verbatim><form id="login" action="j_security_check"></f:verbatim> : <f:verbatim><input type="submit" value="ログイン" /></f:verbatim> : <f:verbatim></form></f:verbatim> ---- としています。 これで、よいのかはわかりませんが、 エラーの場合、ちゃんと/error.jsfへ飛んでくれますが、 認証できるユーザー名、パスワードを入力すると、 ---- HTTPステータス 403 - 要求されたリソースへのアクセスが拒否されました -------------------------------------------------------------------------------- type ステータスレポート メッセージ 要求されたリソースへのアクセスが拒否されました 説明 Access to the specified resource (要求されたリソースへのアクセスが拒否されました) has been forbidden. ---- となってしまいます。 どのあたりが怪しいでしょうか? | ||||||||||||
|
投稿日時: 2005-11-26 21:53
JSFを使った場合は<form>や<input>を自分でレンダリングしないと
j_security_checkの仕様に沿えないので仕方ないと思いますよ。 私もつい最近似たような方法で作りました(JBossですけど)。 #TomahawkのforceIdを使えばできるかもしれませんね
認証されたユーザーが正しいロールを持っていることを確認されていますか? | ||||||||||||
|
投稿日時: 2005-11-27 15:52
件名が「JSF Tomcatでフォーム認証」なので的外れなレスかもしれませんが、このスレッドが「技術的な興味」ではなく「実務上の解決方法」を探しているのであれば、「ログインページを非JSF(普通のhtmlとかjsp)で作り、ログイン成功後からJSFベースのアプリケーションに移行する」という形でも良いかと思います。
| ||||||||||||
|
投稿日時: 2005-11-28 00:46
アクセス拒否の件は、ロールの設定の不備を修正しまして
解決いたしました。ありがとうございました。 で、ご指摘のあった<form-login-page>をJSFにするのは、 私も向いていないなぁと思ったのですが、このページで managedBean:sessionに値をセットする必要があったので、 このようにしました(が、うまくいっていません)。 ■login.jsp
■faces-config.xml
■securitycheck.jsp
securitycheck.jspの書き方がJSFの流儀に沿っていないので、 そのあたりも問題もあるかと思いますが、 このようなエラーになります。 ---- HTTPステータス 404 - /hoge/j_security_check -------------------------------------------------------------------------------- type ステータスレポート メッセージ /hoge/j_security_check 説明 The requested resource (/hoge/j_security_check) is not available. ---- 解決策はございますでしょうか? よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2005-11-28 11:08
試したわけでなくて思いつきのレベルで恐縮ですが,もしマネージドビーンに設定するの が目的であれば,faces-config.xmlで初期値として指定してはどうでしょうか? 認証ページはJSFを使わずに通常のJSPで作っておいて,faces-configはこんな感じかな. <managed-bean> <managed-bean-name>user</managed-bean-name> <managed-bean-class>Userbean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>userId</property-name> <value>#{param.j_username}</value> </managed-property> <managed-property> <property-name>password</property-name> <value>#{param.j_password}</value> </managed-property> </managed-bean> #もしうまく行ったら,ぜひサンプルコードを教えてください ^o^) | ||||||||||||
|
投稿日時: 2005-12-01 22:51
すいません、ちょっと時間が空いてしまいました。
faces-config.xmlで値をセットする方法を試してみましたが、 セットされません。Exceptionもでていません。 <value>#{param.j_username}</value> を <value>test</value> などとすると、当然ですがあたいがセットされますが。 |