サポート > リポジトリ > アカウント > ログオンアカウントの英字の大文字・小文字を同一文字として扱う

ログオンアカウントは標準で、英字は大文字と小文字表記を区別します。("A"と"a"は異なる文字として扱います。)これを同一文字として扱う方法を説明します。

ここで紹介する方法は、システムに登録するアカウント (juser) のアカウント名をすべて「大文字」で登録することを前提としています。

ログオン処理で、入力されたアカウント文字列を「大文字」に変換します。これによって、入力された文字列に小文字が含まれていた場合でも、いったん大文字に変換したあとで判定されるため、大文字・小文字の区別を行わなくなるという仕組みです。

jfcbase.propertiesの設定

wagbydesigner\bin\webpage\WEB-INF\src\jfcbase.properties を customize\resources\myjfcbase.properties としてコピーします。

テキストエディタ(Windows OS に付属のメモ帳は使用不可です。その他のテキストエディタをご利用ください。)を用いて、コピーした myjfcbase.properties ファイルを編集します。

このファイル中に、次のような記載があります。

; jp.jasminesoft.jfc.LogonFormFilter
;jp.jasminesoft.jfc.LogonFormFilterName=jp.jasminesoft.jfc.service.ToUpperCaseUserNameFilter

この設定は、ログオン画面で入力したアカウント名をすべて大文字に変換するフィルタサービスを指しています。最初のセミコロン (;) を除去し、この設定を有効にします

; jp.jasminesoft.jfc.LogonFormFilter
jp.jasminesoft.jfc.LogonFormFilterName=jp.jasminesoft.jfc.service.ToUpperCaseUserNameFilter

今回の修正 *以外* のエントリは削除します。myjfcbase.properties ファイルはビルド時に元のファイルと自動マージされます。(削除した部分は、元のファイル jfcbase.properties の値が使われます。つまり myjfcbase.properties には、元のファイルとの差分情報だけを記述します。)

修正したファイルを保存し、フルビルドを行ってください。

運用方法

システム管理者 (admin) を含め、すべてのログオンアカウントを事前に「大文字」としておいてください。外部データベース利用時は、直接データベースを操作して juser テーブルを編集するとよいでしょう。

独自のフィルタクラスを用意することもできます。インタフェース jp.jasminesoft.jfc.service.LogonFormFilter を実装したクラスを用意し、jfcbase.properties に作成したクラスを登録します。

標準で用意した ToUpperCaseUserNameFilter は次のようになっています。

package jp.jasminesoft.jfc.service;

import jp.jasminesoft.jfc.controller.LogonForm;

public class ToUpperCaseUserNameFilter implements LogonFormFilter {
  public void doFilter(LogonForm form) {
    if (form.getUser() != null) {
      form.setUser(form.getUser().toUpperCase());
    }
  }
}

LogonForm クラスには、getUser と setUser メソッドが用意されています。これを使って値を変換し、再セットするようにします。

本クラスはフィルタのチェイン構造となっていません。doFilter メソッドの戻り値は void となっています。doFilter メソッド内で動作を完結させるように実装してください。
Wagby Developer Day 2017