07.サンプルのスナップショット
概要
サンプルのスナップショットを記載します。
ログイン画面
ログイン画面です。
サンプル用なので、PWにマスクをかけていません。
DBに登録されたID/PWを使用するので、先立ってレコードを登録する必要があります。
JUnitを起動するとDBにレコードがinsertされますので、実行してからログインしてください。
ユーザ編集画面
エンドユーザ向けの画面。
入力画面
入力画面です。
確認画面
確認画面です。
完了画面
完了画面です。
【ログ】
2015-04-01 21:24:39,082 INFO /cust/member/edit/transactfinish.html taro[ROLE_ADMIN] :audit:データ更新されました。更新されたフィールド={upDate=before[2015-03-31T21:38:40.437+09:00]: after[2015-04-01T21:24:38.808+09:00], name=before[太郎]: after[四朗], age=before[12]: after[15], version=before[1]: after[2]}
2015-04-01 21:24:39,257 INFO /cust/member/edit/finish.html taro[ROLE_ADMIN] JDBCトランザクション開始
2015-04-01 21:24:39,258 DEBUG /cust/member/edit/finish.html taro[ROLE_ADMIN] ==> Preparing: select id as id, name as name, age as age, login_id as loginId, login_pw as loginPw, role as role, up_date as upDate, version as version from t_member where id = ?
2015-04-01 21:24:39,258 DEBUG /cust/member/edit/finish.html taro[ROLE_ADMIN] ==> Parameters: 1(Integer)
2015-04-01 21:24:39,258 DEBUG /cust/member/edit/finish.html taro[ROLE_ADMIN] <== Total: 1
2015-04-01 21:24:39,258 INFO /cust/member/edit/finish.html taro[ROLE_ADMIN] JDBCコミット
監査ログとして、更新された値のみが出力されています。
このログ出力は、汎用的な関数になっているので、どのモデルに対しても使用できます。
ログの先頭に「:audit:」という文字列を出力しているので、grepなどで、監査ログだけを抜き出すこともできます。
また、トランザクションの開始ログがINFOレベルで出力されています。
通常であればデバッグレベルになります。
SQL文のログ出力は、デバッグのために出力させています。
商用にリリースする前には出力をしないように設定変更した方が良いと思います。
管理者画面
検索画面
管理者画面ですので、すべてのユーザを閲覧・編集できます。
まずは閲覧するユーザを選択するため、検索をします。
検索結果一覧画面
検索結果一覧です。
検索条件も出力しています。
ページングは自作しています。汎用的に使用できるようにしています。
【監査ログ】
2015-04-01 21:26:17,302 INFO /admin/member/srch/list.html taro[ROLE_ADMIN] :audit:検索が行われました。検索キー=com.sample.app.business.model.MemberSearchKeys@12443aea[id=<null>,name=<null>,nameBW=崎,ageFrom=-1,ageTo=-1,loginId=,orderBy={1},_pagesize=5,_page=0]
検索したキーを監査ログで出力しています。
入力画面
編集ボタンを押して、入力画面に来ました。
この画面のJSPファイルはユーザ向け画面と同じですが、
結構、画面の見た目が違います。
また、編集処理のコードも同じです。しかし、ユーザ向け画面では、ロールのデータは受け取らないように
なっています。
もし受け取れてしまうと、ユーザ自身でパラメタをハックして、ロールを変更できてしまいます。
ロールが変更できると、当然、管理者権限になって、他のユーザの操作ができてしまうかもしれません。
セキュリティホールですね。
確認画面
確認画面です。
JSPファイルはユーザ向けの画面と同じです。
完了画面
完了画面もJSPファイルはユーザ向け画面と同じです。
検索結果一覧へのボタンを押すと、最初の検索結果一覧画面に遷移します。
検索結果一覧画面(完了画面からの戻り)
検索結果一覧画面に戻りますが、検索条件やページは同じになっています。
ユーザの編集画面では検索キーをパラメタとして引き継いでいました。
引き継ぎもパラメタ1つで可能なように自作ページング機能で行っています。
最後に
いかがでしょうか。
少し、サンプルで遊んでみてもいいかな、と思ってもらえれば幸いです。
Created Date: 2015/04/01