0

私は、2 つの異なる言語の 2 つのコンテキストを持つ完全な Web サイトを持っています。唯一の公開ページは、両方の言語のランディング ページです。残りは非公開/保護する必要があります。これは、リソース グループと匿名ユーザーの制限によって実現しました。ランディング ページでは、保護されているすべてのメニュー エントリが匿名ユーザーに表示され、クリックすると 2 つのログイン フォームを含むポップアップが表示されます。これらのログインフォームは他のサイトからのものであり、ユーザーが資格情報を入力したときに権限があるかどうかにかかわらず返されます。そして、このセッションが存在する限り、ユーザーがもちろん承認されていれば、ユーザーはすべてのページを表示できるはずです。

非 modx または php プロとしての私の推測では、ランディング ページ (およびすべてのサブページ) が読み込まれたときにセッションが存在するかどうかを確認する必要があります。ユーザーがログインしていない場合、すべてのリンクはポップアップを指します。次に、ユーザーはログインし、情報を外部サーバーに送信し、成功するとプライベート/保護されたランディング ページにリダイレクトされます。おそらく、何を探すべきか完全にはわからないため、これについては情報が見つかりません。ログインを表示しない場合は、保護されたページに有効なセッションが存在するかどうかを確認する 1 つのスニペットが必要です。私が必要とする他のコードは、外部ログインが成功した場合にユーザーのセッションを作成するものです。これはスニペットであるか、サーバー上の単なる php ドキュメントである必要があります。また、保護されたページのセッションを開始するにはどうすればよいですか?

4

2 に答える 2

1

MODX Revolution は、保護されたページにアクセスしようとするときにユーザーがログインしているかどうかを確認しますが、手動で確認したい場合は、次のスニペットを使用します。

 if (!$modx->user->hasSessionContext($modx->context->get('key'))) {
    $modx->sendUnauthorizedPage(); // redirect to the informative page for non-logged users
}

ログインしているユーザーを確認し、そうでない場合はログインポップアップを表示する必要がある場合は、単純なユーザーIDチェックで出力修飾子を使用するとうまくいくかもしれません:

[[+modx.user.id:if=`[[+modx.user.id]]`:eq:=`0`:then=`Not logged in`:else=`logged in`]]

MODX サイト外から認証されたユーザーのセッション作成に行く場合、エターナルページからステータスをチェックしてユーザーをログインさせるスニペットを書くことをお勧めします。これにより、セッションチェックは省略されますが、それでも機能目標を達成する必要があります。

于 2012-11-16T17:54:14.977 に答える
1

これは、次の 2 つの方法で行うことができます。

  1. Modx に接続されていないユーザー システムを作成します。私はこれが簡単だと思います。これまでに何度かこれを行いました。ユーザー名とパスワードを持つユーザー用のテーブルを作成し、そこからオブジェクトを作成して、xpdo を使用してクエリを実行できるようにする必要があります。このシステムが稼働していれば、すべてのテンプレートにスニペットを含めて、ユーザーが実際にログインしていることを確認しても問題ありません。ログインしていない場合は、正しいフロントページ/ランディングページにリダイレクトしてください。これには多少のコーディングが必要ですが、前述したように、魅力的に機能します。

  2. スニペットhttp://modx.com/extras/package/login (真のレジェンドである Spittingred によるもの) をダウンロードし、コードを見てください。私はこれまでこのエクストラを使用したことがありませんが、Modx と同じユーザー システムを使用していると確信しているため、目的を達成できるはずです。「ソースを見て、スピッティングレッドがどのようにそれを行ったかを理解する」以上の助けはありません.

于 2012-11-18T03:03:29.480 に答える