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

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) 初期化が可能な場合(開発段階)

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

  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人がこの記事が役に立ったと言っています