0

現在、フロントエンドのログイン後にユーザーの情報を表示する拡張機能を開発しています。ユーザーはそれらに同意する必要があります (利用規約など)。

今、私は優れた安全なログアウトメカニズムを探しています:

  1. ユーザーがログイン後に情報ページにリダイレクトされる

    • 状態:FEログイン可能
  2. ユーザーは情報を読み、「同意する」と「ログアウト」をクリックできます

    • 受け入れた場合: ユーザーの開始ページにリダイレクト
    • ログアウトの場合: 「logintype=logout」でログインページに移動します

ここに問題があります:

ステップ 2 では、ユーザーはブラウザに任意の有効な URL を入力でき、TYPO3 には有効な FE ログインがすでにあります (ステップ 1) -> ページは受け入れずに表示されます。

最初の解決策のアイデア: ステップ 1 で常にログアウトし、[同意する] をクリックした場合は再度ログインします。しかし、自動ログインのユーザー資格情報がわかりません。どうにかしてこれを行うことはできますか?

解決策の 2 番目のアイデア: Cookie を追加し、TypoScript テンプレートでログアウトへのリダイレクトで条件を作成します。Cookie は操作が簡単すぎるため、私のお気に入りのソリューションではありません。また、一部のユーザーがワークステーションを共有しているため、Cookie に関する奇妙な問題が常に発生します。

3 番目の解決策のアイデア: リダイレクトをログアウトに設定する場合は、fe_user テーブルにフラグを追加します。問題: すでにパフォーマンスの問題があります。ページの読み込み時間を増やさない解決策はありますか? このチェックは、ページをロードするたびに行う必要があると思います...

そのための解決策のアイデアはありますか?

  • タイポ3 4.5
  • 拡張子は ExtBase
  • コードを fe_login 拡張機能に追加することは可能なオプションです。すでに変更されています。
4

3 に答える 3

2

誰かがそれを必要とする場合、これが私のソリューションコードです:

1) 拡張機能にユーザー キーを追加します。直接の Cookie アクセスはありません。

$GLOBALS['TSFE']->fe_user->setKey('user', 'acceptFromExtension', 1);
$GLOBALS['TSFE']->storeSessionData();

2) 受け入れられた場合はキーを削除します。

if accepted {
  $GLOBALS['TSFE']->fe_user->setKey('user', 'acceptFromExtension', 0);
  $GLOBALS['TSFE']->storeSessionData();
}

2) TypoScript でキーをチェック - fe_user|uc に保存:

[globalVar = TSFE:fe_user|uc|acceptFromExtension> 0]
  page.config >
  page.config.additionalHeaders = Location: http://www.mydomain.com/index.php?id=111&logintype=logout
[END]

そのためのsankar-vに感謝します!

于 2013-01-11T12:56:42.247 に答える
1

セッションが使えない?ユーザーが同意をクリックしたときにセッション変数を設定し、次のようなタイポスクリプト条件を使用します。

[globalVar = TSFE:fe_user|sesData|accept > 0]
page.10.userFunc = tx_templavoila_pi1->main_page

[ELSE]
page.10 = TEXT
page.10.value = You are not allowed to visit this page
or
page.config >
page.config.additionalHeaders = Location: http://www.yourdomain.org/login.html
[END]
于 2013-01-11T10:53:13.510 に答える
0

独自の拡張機能を持っている間、プログラムlogoffでユーザーをその中のユーザーにリダイレクトし、ブラウザーを他のページにリダイレクトする$somePreparedUriことができます (拡張機能で作成するか、または TypoScript から取得することができます - 静的な値として - 必要に応じて異なります)。

if (!$accepted)
    $GLOBALS['TSFE']->fe_user->logoff(); 
    return $this->redirectToUri($somePreparedUri);   
)
于 2013-01-11T11:45:22.813 に答える