1. ユーザーは discuz にログインし、logging.php ファイルの uc_user_login 関数を通じて投稿されたデータを確認します。つまり、ユーザー名とパスワードを確認します。
2. 検証が成功すると、uc_client の下の client.php ファイルにある関数 uc_api_post('user', 'synlogin', array('uid'=>$uid) が呼び出されます。 )が呼び出されます。
3. 次に、この関数は Ucenter の Index.php にデータを渡します。Index.php は渡されたデータを受け取り、モデルの値を user として、action を synlogin として取得します。
4. 次に、Ucenter の Index.php は、foreach ループを通じて、同期ログインを有効にする uc アプリケーション リスト内のアプリケーションを呼び出します。 、 get メソッドを介して、各アプリケーション ディレクトリの API の下にある uc.php にデータを渡します。
5. uc.php は通知を受け取り、取得したデータを処理し、関数 synlogin (uc.php にあります) 内の関数 _authcode を使用してデータを暗号化し (デフォルトではキーとして UC_KEY を使用します)、関数 _setcookie で Cookie を設定します。 。
6. 各アプリケーションは、対応するキーを使用して上記の Cookie セットをデコードし、ユーザー ID およびその他のデータを取得します。この値を使用して、ユーザーが他のアプリケーションを通じてログインしたかどうかを判断し、ユーザーが自動的にログインできるようにします。
アプリケーション内のLogging.php ——>client.php (uc_client 内)——>Ucenter——>api/uc.php 他のアプリケーション内。
実際、同期ログインを実現するための Ucenter の原理は、アプリケーションがログインに成功すると、データを Ucenter に転送し、Ucenter が他のアプリケーションにも Cookie を設定するように通知します。これにより、ユーザーは Cookie を通じて自動的にログインできます。他のアプリケーションにアクセスするときに設定されたもの。
一般的な手順は次のとおりです: まず ucenter をインストールし、次に uc_client フォルダーを独自のプロジェクトにコピーし、次にいくつかのファイルを設定します
client.phpは関数ライブラリに相当します
uc.phpはコールバックファイルに相当します
config.php は設定ファイルです
同期ログインを設定したアプリケーションが2つある場合、一方のアプリケーションにログインして実行した場合
setcookie(“ユーザー名”,$ユーザー名,time()+intval(24*3600));
echo uc_user_synlogin($uid);
echo 'ログイン成功';
elseif($uid == -1) {
echo 'ユーザーが存在しないか、削除されました';
elseif($uid == -2) {
echo 'パスワードが間違っています';
} その他 {
エコー「未定義」;
}
このようなJSコードが同期ログインを可能にする各アプリケーションに送信され、同期ログインを可能にする各アプリケーションのコールバックファイルuc.phpを受け取った後、実際に自分でコードを書くことができます。この uc.php コールバック ファイルは、その形式で記述する必要はありません。独自のコードを記述することもできます。
実際、UC の原理は非常に単純です。つまり、アプリケーションがログインした後、バックグラウンドで同期的にログインしたアプリケーションに送信されたコールバック ファイルをポーリングし、コールバック ファイルがユーザー ID を受け取った後、それを生成します。 Cookie またはセッションを取得し、ログイン モードに入ります。を検証します。