Red de conocimiento informático - Material del sitio web - Cómo utilizar UCenter para implementar el inicio de sesión único

Cómo utilizar UCenter para implementar el inicio de sesión único

Primero, echemos un vistazo a los pasos de inicio de sesión de Ucenter

1. Después de que el usuario inicia sesión en Discuz, los datos de publicación se verifican a través de la función uc_user_login en el archivo logging.php, es decir, el nombre de usuario y contraseña están verificadas.

2. Si la verificación es exitosa, se llamará a la función uc_user_synlogin ubicada en uc_client en el archivo client.php, uc_api_post('user', 'synlogin', array('uid'). = gt; $ fluido)).

3. Luego pase esta función a index.php después de que Ucenter.php acepte los datos pasados ​​y obtenga el valor cuyo modelo es usuario y la acción es synlogin.

4. Luego, index.php de Ucenter llama al método onsynlogin en la clase user.php en el directorio de control y notifica a la lista de aplicaciones uc a través de javascript a través del bucle foreach para habilitar el inicio de sesión sincrónico, de modo que la aplicación puede iniciar sesión sincrónicamente, es decir, pasar los datos a uc.php en api en el directorio de la aplicación a través de get.

5.uc.php recibe la notificación y procesa los datos de get, cifra los datos en la función synlogin (ubicada en uc.php) a través de la función _authcode (la UC_KEY predeterminada es la clave) y utiliza la función _setcookie establece cookies.

6. Cada aplicación utiliza la clave correspondiente para decodificar la cookie configurada anteriormente y obtener la cookie. Obtenga la identificación del usuario y otros datos a través de la cookie configurada anteriormente; use este valor para determinar si el usuario ha iniciado sesión a través de otras aplicaciones, de modo que el usuario pueda iniciar sesión automáticamente.

Registro de aplicaciones.php ------gt; uc_client en client.php ------gt;

De hecho, el principio detrás del inicio de sesión sincrónico de Ucenter es la cookie. Después de que una aplicación inicia sesión exitosamente, los datos se pasan a Ucenter, lo que le permite a Ucenter notificar a otras aplicaciones para que también establezcan cookies, de modo que los usuarios puedan iniciar sesión automáticamente a través de las cookies configuradas al acceder a otras aplicaciones. Después de comprender el principio de sincronización de Ucenter, será mucho más fácil encontrar situaciones en las que no pueda iniciar sesión sincrónicamente o desarrollar algunas interfaces con UCenter.

Los pasos generales son primero instalar ucenter, luego copiar la carpeta uc_client a tu proyecto y luego configurar varios archivos

client.php es equivalente a la biblioteca

uc.php es equivalente a un archivo de devolución de llamada

y config.inc.php es un archivo de configuración

Cuando tiene 2 aplicaciones configuradas para iniciar sesión sincrónicamente, cuando inicia sesión una aplicación y ejecutarla

[php] ver copia simple

include './config.inc.php'

include './ uc_client/client .php';

$nombres de usuario="feiye";

$contraseñas="789123";

lista($uid, $nombre de usuario, $contraseña, $correo electrónico) = uc_user_ login($nombres de usuario, $contraseñas);

if($uid gt; 0) {

setcookie("nombre de usuario", $nombre de usuario, intervalo de tiempo () (24*3600));

echo uc_user _synlogin($uid);

echo 'Inicio de sesión exitoso'

} elseif($uid == - 1) {

echo 'El usuario no existe o fue eliminado'

} elseif($uid == -2) {

echo 'Incorrecto contraseña';

} else {

echo 'Indefinido'

}

uc_user_synlogin() Esta función envía otras funciones que tienen El inicio de sesión sincrónico habilitado representa el inicio de sesión sincrónico.

uc recorre todas las aplicaciones que tienen el inicio de sesión sincronizado habilitado en segundo plano y luego genera esa información en la página

[ html] Ver texto sin formato

lt; / javascript" src="http://127.0.0.70/api/uc.php?time=1374540644amp;code=14fdIufn 2B2YwkQlN9P07FEHOfZvDJupvgBgaRPn7R0DJmbEwCb23vKwO1uaeybLq3HZhtokoZrnqu7NGi09jzs684 bLDiSpKhk6P50MftBRA3vp4yIswhrPMl1dXo5ajB7CVZ9F8EI //127.0.0.71/api/uc.php?time=1374540644amp;code=07a91g8SepQwwfA3C1uN1sPhC4v6yuER1jFbVTQMK2BQZmTkjwOz 8X" .2B8rWgNmKdhlXe9XXVQqAkDjN26CK6BMA19ZpLoiSW4wuNnxHAB9xXLt2VExuyf03MnEHAC2BUdjwb58sbXGcYUpM4Bmzdm3Q92ObSp0Kk2qCd12fqg" reload="1"gt;lt;/scriptgt;

Este código js se enviará a cada aplicación de inicio de sesión sincrónico, y luego cada aplicación de inicio de sesión sincrónico tendrá un archivo de devolución de llamada, es decir, uc .php y descifrarlo cuando lo reciba. Una vez descifrado, puede escribir su propio código. El código en uc.php no tiene que tener el mismo formato que el de ellos.

Por ejemplo, sincronizo el inicio de sesión según la sesión

[php] Ver copia pura

function synlogin($get, $post) {

$uid = $get ['uid'];

$nombre de usuario = $get['nombre de usuario'];

if(!API_SYNLOGIN) {

return API_RETURN_FORBIDDEN; /p >

}

header('P3P: CP="CURa ADMa DEVa PSAo PSDo NUESTRO BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"); > setcookie ('gwyy', $nombre de usuario, hora() 3600, '/', '127.0.0.71');

_ setcookie('Example_auth', _authcode($uid."\t". $nombre de usuario, 'ENCODE'));

$_SESSION['nombre de usuario'] = $nombre de usuario

$_SESSION['uid'] = $uid; p> }

Función syncookie('gwyy', $nombre de usuario, tiempo() 3600, '/', '127.0.0.

función synlogout($get, $post) {

if(!API_SYNLOGOUT) {

return API_RETURN_FORBIDDEN

}

}

}

//nota Interfaz API de cierre de sesión síncrono

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[' nombre de usuario']);

unset($ _SESSION[ 'uid']);

session_destroy();

}

De esta manera, cuando el usuario actualiza otra página de la aplicación, inicia sesión automáticamente.