我目前正在使用以下代码在Wordpress中使用wp_set_auth_cookie()
函数登录用户:
function auto_login() {
$username = $_POST['user'];
if ( !is_user_logged_in() ) {
$user = get_userdatabylogin( $username );
$user_id = $user->ID;
wp_set_current_user( $user_id, $user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user_login );
}
die();
}
add_action('wp_ajax_auto_login', 'auto_login');
add_action('wp_ajax_nopriv_auto_login', 'auto_login');
我遇到的问题与此线程相同:
Authenticating users in WordPress using wp_set_auth_cookie
但由于这个问题没有得到完全回答,我的情况如下:
用户1使用用户名1
用户2使用用户名2登录到PC 2
用户名1显示为已登录
所以我的问题是,如何使用wp_set_auth_cookie()
函数登录用户,同时还阻止为我的所有用户显示相同的用户名?
更新:我的所有用户现在都以用户1的身份自动登录
由于
答案 0 :(得分:2)
您正在使用一些已弃用的函数,但未正确传递username
- 未设置变量$user_login
,您想使用$user->user_login
。另外get_userdatabylogin()
已被弃用,转而使用get_user_by()
。
尝试使用以下内容,请注意,这不会验证密码。有关详细信息,请参阅wp_set_current_user()
的文档。
function auto_login() {
// make sure user is not logged in and "user" was POST'd
$username = isset( $_POST['user'] )? $_POST['user'] : false;
if ( ! is_user_logged_in() && $username ){
// load the user by username
$user = get_user_by( 'login', $username );
if ( $user ) {
// log user in using the $user object properties
wp_set_current_user( $user->ID, $user->user_login );
wp_set_auth_cookie( $user->ID );
do_action( 'wp_login', $user->user_login );
}
}
}