ホームページ > バックエンド開発 > PHPチュートリアル > シングル サインオン Ucenter の例分析_PHP チュートリアル

シングル サインオン Ucenter の例分析_PHP チュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-13 10:25:40
オリジナル
979 人が閲覧しました

まず、Ucenter のログイン手順を理解しましょう

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 in uc_client------>Ucenter------>アプリケーション内の api/uc.php

実際には同期ログインを実現するための Ucenter の原理は Cookie です。アプリケーションがログインに成功すると、データが Ucenter に転送され、Ucenter が他のアプリケーションにも Cookie を設定するように通知されます。これにより、ユーザーは設定された Cookie を使用して自動的にログインできます。他のアプリケーションにアクセスします。 Ucenter の同期原理を理解すると、同期ログインや UCenter を使用したインターフェイスの開発で問題が発生した場合に、作業がはるかに簡単になります。

一般的な手順: まず、ucenter をインストールし、uc_client フォルダーを独自のプロジェクトにコピーする必要があります。次に、いくつかのファイルを構成します

client.php は関数ライブラリに相当します

uc.php はコールバック ファイルに相当します。

設定ファイルであるconfig.inc.phpもあります

同期ログインを設定したアプリケーションが2つある場合、一方のアプリケーションにログインして実行する場合

コードをコピーしてくださいコードは次のとおりです:

include './uc_client/client.php';
$usernames="feiye"
list( $uid, $username, $password, $email) = uc_user_login($usernames, $passwords);
if($uid > 0) {
setcookie("username",$username,time()+intval(24*) 3600));
echo uc_user_synlogin($uid);
echo 'ログイン成功'
} elseif($uid == -1) {
echo 'ユーザーが存在しないか、削除されました'; uid == -2) {
echo '間違ったパスワード';
} else {
echo 'unknown';


uc_user_synlogin() この関数は、uc 自体がループする他のすべての関数への同期ログインを表します。バックグラウンドでの同期ログインを有効にするすべてのアプリケーションを介して一度ページに出力します


コードをコピーします
コードは次のとおりです:


コードをコピー
コードは次のとおりです以下:
このような JS コードが全員に送信されます。 同期ログイン アプリケーションを有効にし、同期ログインを有効にする各アプリケーションのコールバック ファイル uc.php を復号化したら、実際にコードを自分で書くことができます。 uc.php コールバック ファイルのコードは次のようにする必要はありません。たとえば、セッションに基づいて同期ログインを実行することもできます


。は次のとおりです:

関数 synlogin($get, $post) {
$uid = $get['uid'];
$username = $get['username'];
if(!API_SYNLOGIN) {
return API_RETURN_FORBIDDEN
} header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
setcookie('gwyy',$username,time()+3600,'/' ,'127.0.0.71');
_setcookie('Example_auth', _authcode($uid."t".$username, 'ENCODE'));

$_SESSION['username'] = $username; 'uid'] = $uid;

function synlogout($get, $post) {
if(!API_SYNLOGOUT) {
return API_RETURN_FORBIDDEN;
}
//note 同期ログアウト API インターフェイス
header('P3P: CP ="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
_setcookie('Example_auth', '', -86400 * 365); ]);
unset($_SESSION['uid']);
session_destroy()
}

このようにして、ユーザーは他のアプリケーション ページを更新した後に自動的にログインします

UC でのアプリケーション プロンプトの追加に注意してください通信が失敗する場合、その単純な理由は http://xxxx/api/uc.php ファイルが存在する限り、通信は確実に成功します
実際、UC の原理はこれに当てはまります。アプリケーションにログインすると、同期的にログインしたアプリケーションに送信されたコールバック ファイルがバックグラウンドでポーリングされ、コールバック ファイルがユーザー ID を受信した後、Cookie またはセッションが生成され、ログイン モードに入ります。



http://www.bkjia.com/PHPjc/824962.html
www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/824962.html技術記事まず第一に、Ucenter のログイン手順を理解しましょう。 1. ユーザーは discuz にログインし、logging.php ファイルの uc_user_login 関数を通じて投稿されたデータ、つまりユーザー名と p を確認します。
関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート