2012-04-14 8 views
0

Glassfishのコンテナ管理セキュリティを使用して、個々の「プロファイル」ページを作成し、ログインした人だけがそれを変更できるようにする方法を教えてください。ユーザー "John"と "Amanda"を持っていて、どちらも "user"という役割を持っているとしたら、 "John"だけが "Amanda"ではなく自分のプロフィールページを変更できることをどのように確認できますか?ユーザーが正常にログインした後にメソッドを呼び出す方法は?

<form method="POST" action="j_security_check"> 
    <table> 
     <tr> 
      <td>User name:</td> 
      <td><input type="text" name="j_username" /></td> 
     </tr> 
     <tr> 
      <td>Password:</td> 
      <td><input type="password" name="j_password" /></td> 
     </tr> 
     <tr> 
      <td><input type="submit" value="Login" /></td> 
     </tr> 
    </table> 
</form> 
+0

わからないあなたはログインJSPを掲載する理由。現在のユーザーのユーザーIDが、変更されるプロファイルのユーザーIDと一致していることを確認してください。 –

+0

これはJSPではなく、JSF 2.0 - > XHTMLです。そして、ページがアクセスされる前にこれを/どこでチェックしますか? – LuckyLuke

+0

プロファイルページは、すべてのユーザーが同じで、構成とアクセス可能性の意味で同じである必要があります。 DBから取得したユーザデータによってコンテンツが異なります。 「John」は、単に「Amandas」プロファイルを変更することはできません。まず第1に、異なるセッションで作業し、一意のIDに基づいてデータを保存するためです。したがって、「John」がプロファイルに変更を加えた場合、 DBで更新されます。アクセスを制限するということは、プロファイルページを、ロール "user"を持つログインユーザーだけにアクセスできる制限されたページの下に置くことを意味します。例えば、チェックしてください。 [グラスフィッシュセキュリティ](http://tinyurl.com/c4pmfcx) – Fallup

答えて

1

セッションからログインしたユーザーとデータベースからフェッチするように要求されたプロファイルが同じであるかどうか確認できませんか?一致しない場合、ユーザーはそのページを編集できません。理想的には、この種のユーザーセッションロジックをサーバーフィルターに入れて、すべての要求に対して機能させることができます。

1

これはSEAMフレームワークで簡単に行うことができます。あなたはちょうど保護されたインタフェース@Adminを作成し、次にcheckerメソッドを作成しますpublic @Secure @Admin checkAdmin(Identity identity){}

その後@Adminをメソッドに追加することができます。

簡単ですあなたがすることができる他の事、:。 ちょうど「レンダリング」属性を使用してログインしているユーザーをチェック

関連する問題