スクリーン名について(Liferay DXP)

背景:

Liferayのデフォルト設定では使用できないスクリーン名があります。 その制限の回避方法をご紹介します。

詳細:

使用不可能な文字

デフォルトのLiferayで、スクリーン名に使用出来ない文字や文字列は以下の通りです:

  • 「半角英数字(0-9, a-z)」、「-(ハイフン)」、「.(ドット)」、「_(アンダースコア)」以外の文字列

 ※半角大文字で入力した場合でも全て小文字に変換されます

  • @を含む文字列
  • 半角数字のみの文字列
  • 75文字より多い文字列
  • admin.reserved.screen.namesプロパティに指定された文字列

 

又は「コントロールパネル>インスタンス設定>設定>ユーザー”使用禁止スクリーン名とメール」の「スクリーン名」欄に設定した文字列

  • 以下のフレーズ(大文字小文字の組み合わせを問わず使用不可)

 null

 guest

 anonymous-guest

 anonymous

 postfix

 

半角数字のみ文字列を可能にする

半角数字のみの文字列をスクリーン名に使用できるようにするには、次のプロパティを設定します。デフォルトでは無効になっています。 

users.screen.name.allow.numeric=true

 ※ただし、このプロパティを設定した場合でも、以下の制限がありますので、予めご了承ください。

 

半角数字のみ文字列の制限と回避方法 

半角数字のみのスクリーン名を有効にした場合でも、以下と重複するものはスクリーン名に使用できませんのでご注意ください。

  • Group_.groupIdと重複する数値
  • UserGroup.userGroupIdと重複する数値 

※現時点で上記をスクリーン名に使用する方法は無く、コアエンジニアが仕様の見直しを検討中でございます(LPS-66460)。ただし、後述の手順を実施することで、これら数値の重複を防ぐことができます。

 

回避方法は2つありますが、完全回避のできる前者を推奨します。

1) 初期化が可能な場合(開発段階) 

この方法は、データベースの初期化が必要になります。すでに運用を開始しており初期化できない場合は、後述の「初期化が不可能な場合」をご参照ください。

  1. Liferayを停止
  2. データベースをバックアップ
  3. Counterテーブルを除く、全テーブルをドロップ(初期化)
  4. Counterテーブルの「com.liferay.counter.model.Counter」を除く、全レコードを削除
  5. 「com.liferay.counter.model.Counter」の値を「100000000(想定されるユーザーの範囲以上)」に変更
  6. Liferayを起動

 「Table 'counter' already exists: create table Counter」と

「Duplicate entry 'com.liferay.counter.model.Counter' for key 'PRIMARY': insert into Counter」エラーが発生しますが、問題ありません。

  1. 「com.liferay.counter.model.Counter」に指定した値(100000000)以降からサイトID(グループID)等が作成されます。

 これにより、ユーザーのスクリーン名との重複を防ぐことができます。 

2) 初期化が不可能な場合(運用段階)

この方法により、ワークアラウンド実施以降に作成されるサイトID(グループID)については、スクリーン名との重複を防ぐことができます。ただし既存のサイトID(グループID)は例外となります。

  1. Liferayを停止
  2. データベースをバックアップ
  3. 「com.liferay.counter.model.Counter」の値を「100000000(想定されるユーザーの範囲以上)」に変更
  4. Liferayを起動
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています