Liferayのデフォルト設定では、使用出来ないスクリーン名があります。
- その制限と回避方法をご紹介します。
詳細
不可能な文字
デフォルトのLiferayで、スクリーン名に使用出来ない文字や文字列は以下の通りとなります:
- 「半角英数字(0-9, a-z)」、「-(ハイフン)」、「.(ドット)」以外を含む文字列
※半角大文字で入力した場合でも全て小文字に変換されます※
- 全角文字列
- _(アンダースコア)を含む文字列
- @を含む文字列
- 半角数字のみの文字列
- 75文字より多い文字列
admin.reserved.screen.names
プロパティに指定された文字列- 以下のフレーズ(大文字小文字の組み合わせを問わず使用不可)
null
guest
anonymous-guest
anonymous
cyrus
postfix
アンダースコア・cyrus・postfix文字列を可能にする
「cyrus」、「postfix」、「_(アンダースコア)を含む文字列」をスクリーン名に使用できるようにするには、次のプロパティを設定します。デフォルトでは無効になっています。
users.screen.name.validator=com.liferay.portal.security.auth.LiberalScreenNameValidator
半角数字のみ文字列を可能にする
半角数字のみの文字列をスクリーン名に使用できるようにするには、次のプロパティを設定します。デフォルトでは無効になっています。
users.screen.name.allow.numeric=true
※ただし、このプロパティを設定した場合でも、以下の制限がありますので、予めご了承ください。
半角数字のみ文字列の制限と回避方法
半角数字のみのスクリーン名を有効にした場合でも、以下と重複するものはスクリーン名に使用できませんのでご注意ください。
Group_.groupId
と重複する数値UserGroup.userGroupId
と重複する数値
※現時点で上記をスクリーン名に使用する方法は無く、コアエンジニアが仕様の見直しを検討中でございます(LPS-66460)。ただし、後述の手順を実施することで、これら数値の重複を防ぐことができます。
回避方法は2つありますが、完全回避のできる前者を推奨します。
1) 初期化が可能な場合(開発段階)
この方法は、データベースの初期化が必要になります。すでに運用を開始しており初期化できない場合は、後述の「初期化が不可能な場合」をご参照ください。
- Liferayを停止
- データベースをバックアップ
- Counterテーブルを除く、全テーブルをドロップ(初期化)
- Counterテーブルの「
com.liferay.counter.model.Counter
」を除く、全レコードを削除 - 「
com.liferay.counter.model.Counter
」の値を「100000000(想定されるユーザーの範囲以上)」に変更 - Liferayを起動
「Table 'counter' already exists: create table Counter
」と
「Duplicate entry 'com.liferay.counter.model.Counter' for key 'PRIMARY': insert into Counter
」エラーが発生しますが、問題ありません。
- 「
com.liferay.counter.model.Counter
」に指定した値(100000000)以降からサイトID(グループID)等が作成されます。
これにより、ユーザーのスクリーン名との重複を防ぐことができます。
2) 初期化が不可能な場合(運用段階)
この方法により、ワークアラウンド実施以降に作成されるサイトID(グループID)については、スクリーン名との重複を防ぐことができます。ただし既存のサイトID(グループID)は例外となります。
- Liferayを停止
- データベースをバックアップ
- 「
com.liferay.counter.model.Counter
」の値を「100000000(想定されるユーザーの範囲以上)」に変更 - Liferayを起動