wp_set_auth_cookie() WP 2.5.0

Авторизує користувача за ID. Встановлює cookie автентифікації на основі переданого ID користувача.

Функцію потрібно використовувати до виведення будь-якого контенту на екран, тому що вона працює з заголовками http.

Дія функції буде помітна після оновлення сторінки, а не одразу.

Це init .

Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.

Основа для:
wp_signon()

Повертає

null. Нічого не вертає.

Використання

wp_set_auth_cookie($user_id, $remember, $secure, $token);
$user_id
(число) (обов’язковий)
ID користувача.
$remember
(логічний)
Чи потрібно запам’ятовувати користувача. true – збільшує час життя куків до 14 днів. За промовчанням (false) куки дійсні протягом 2-х днів. Цей параметр аналогічний галочці “запам’ятати мене” у формі авторизації.


Типово: false
$secure
(логічний)
Встановлює яке ім’я куки використовувати для ssl (захищене) чи ні? береться з констант:
SECURE_AUTH_COOKIE чи
AUTH_COOKIE .


Типово: is_ssl()
$token
(рядок)
Токен сесії, який потрібно використовувати для поточних куків. C WP 4.3.


За замовчуванням: ”

Приклади

0

#1 Авторизуємо користувача з ID 25. Приклад роботи функції:

$ID = 25;
wp_set_auth_cookie( $ID );
0

#2 Авторизація з очищенням поточних даних

Правильніше авторизуватиме користувача попередньо очистивши всі куки аутентифікації і видаливши кешируючі заголовки:

nocache_headers();
wp_clear_auth_cookie();
wp_set_auth_cookie( $ID );

список змін

З версії 2.5.0Введено.
З версії 4.3.0Added the $token parameter.

Код wp_set_auth_cookie() WP 6.0.2

function wp_set_auth_cookie( $user_id, $remember = false, $secure = '', $token = '' ) {
	if ($remember) {
		/**
		 * Filters duration of authentication cookie expiration period.
		 *
		 * @ Since 2.8.0
		 *
		 * @param int $length Duration of expiration period in seconds.
		 * @param int $user_id User ID.
		 * @param bool $remember Whether to remember the user login. Default false.
		 */
		$expiration = time() + apply_filters( 'auth_cookie_expiration', 14 * DAY_IN_SECONDS, $user_id, $remember );

		/*
		 * Налаштування браузера буде продовжувати працювати з cookie після виходу часу is reached.
		 * Потрібен для логічного терміну терміну в wp_validate_auth_cookie().
		 */
		$expire = $expiration + (12 * HOUR_IN_SECONDS);
	} else {
		/** Цей filter is documented в wp-includes/pluggable.php */
		$expiration = time() + apply_filters( 'auth_cookie_expiration', 2 * DAY_IN_SECONDS, $user_id, $remember );
		$ Expire = 0;
	}

	if ( '' === $secure ) {
		$secure = is_ssl();
	}

	// Front-end cookie is secure when the auth cookie is secure and the site's home URL uses HTTPS.
	$secure_logged_in_cookie = $secure && 'https' === parse_url( get_option( 'home' ), PHP_URL_SCHEME );

	/**
	 * Filters whether the auth cookie повинен тільки бути за допомогою HTTPS.
	 *
	 * @ Since 3.1.0
	 *
	 * @param bool $secure Whether cookie повинен тільки бути встановлений на HTTPS.
	 * @param int $user_id User ID.
	 */
	$secure = apply_filters( 'secure_auth_cookie', $secure, $user_id );

	/**
	 * Filters whether the logged в cookie повинен тільки бути виявлений на HTTPS.
	 *
	 * @ Since 3.1.0
	 *
	 * @param bool $secure_logged_in_cookie Whether logged в cookie повинен тільки бути встановлений на HTTPS.
	 * @param int $user_id User ID.
	 * @param bool $secure Whether the auth cookie should only be sent over HTTPS.
	 */
	$secure_logged_in_cookie = apply_filters( 'secure_logged_in_cookie', $secure_logged_in_cookie, $user_id, $secure );

	if ($ secure) {
		$auth_cookie_name = SECURE_AUTH_COOKIE;
		$scheme = 'secure_auth';
	} else {
		$auth_cookie_name = AUTH_COOKIE;
		$scheme = 'auth';
	}

	if ( '' === $token ) {
		$manager = WP_Session_Tokens::get_instance( $user_id );
		$token = $manager->create($expiration);
	}

	$ auth_cookie = wp_generate_auth_cookie ($ user_id, $ expiration, $ scheme, $ token);
	$logged_in_cookie = wp_generate_auth_cookie( $user_id, $expiration, 'logged_in', $token );

	/**
	 * Fires immediately before the authentication cookie is set.
	 *
	 * @ Since 2.5.0
	 * @since 4.9.0 The `$token` parameter was added.
	 *
	 * @param string $auth_cookie Authentication cookie value.
	 * @param int $expire Натисніть, щоб зареєструвати строки періоду виходу як UNIX timestamp.
	 * Default is 12 hours past cookie's expiration time.
	 * @param int $expiration Час, коли authentication cookie expires as UNIX timestamp.
	 * Default is 14 days from now.
	 * @param int $user_id User ID.
	 * @param string $scheme Authentication scheme. Values ​​включає 'auth' або 'secure_auth'.
	 * @param string $token User's session token to use for this cookie.
	 */
	do_action( 'set_auth_cookie', $auth_cookie, $expire, $expiration, $user_id, $scheme, $token);

	/**
	 * Fires immediately before logged-in authentication cookie is set.
	 *
	 * @ Since 2.6.0
	 * @since 4.9.0 The `$token` parameter was added.
	 *
	 * @param string $logged_in_cookie Встановлено в cookie value.
	 * @param int $expire Натисніть, щоб зареєструвати строки періоду виходу як UNIX timestamp.
	 * Default is 12 hours past cookie's expiration time.
	 * @param int $expiration Час, коли клацнувся в authentication cookie expires as a UNIX timestamp.
	 * Default is 14 days from now.
	 * @param int $user_id User ID.
	 * @param string $scheme Authentication scheme. Default 'logged_in'.
	 * @param string $token User's session token to use for this cookie.
	 */
	do_action( 'set_logged_in_cookie', $logged_in_cookie, $expire, $expiration, $user_id, 'logged_in', $token);

	/**
	 * Allows preventing auth cookies від реально being sent to the client.
	 *
	 * @ Since 4.7.4
	 *
	 * @param bool $send Whether to send auth cookies до the client.
	 */
	if ( ! apply_filters( 'send_auth_cookies', true ) ) {
		return;
	}

	setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
	setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
	setcookie( LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true );
	if ( COOKIEPATH != SITECOOKIEPATH ) {
		setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true);
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *