WordPress 是一个伟大的博客引擎。它是灵活的、可扩展、易于调整和配置集成到现有的网站。然而如果你有一个现有的网站,提供用户认证和管理能力,让 WordPress 接受这些证书(在时尚的单点登录)可能是一个挑战。
在多人共用一个帐号的情况下,有这样一种需求,我不需要知道 WordPress 的用户名和密码,就能自动登录到公共帐号。这样的需要该如何实现呢?
在我们开始之前,我应该注意到,有许多可用的插件使 WordPress 的一些流行的内容管理系统在整合。我们的要求是有点不同。我们想绕过 WordPress 的认证机制结合在一起,通过该网站的主要部分的用户登录。事实上在一个良好的综合网站,界面应使 WordPress 的网页和网站的无缝的用户休息之间导航。我们的目标是写一个 WordPress 插件,可以自动验证用户已经登录到父网站(授予用户访问编辑博客的内容)。所有其他用户将会有一个未注册的访客的权利。
在我的设置,主要网站具有基于角色的权限和 WordPress 安装只有每个角色的一个帐户(即管理员,编辑,用户等)。该插件检查用户登录到网站,然后模拟一个 WordPress 随时登录用户导航到博客的作用。你应该能够为自己的需要定制方法。
利用 wp_signon() 模拟用户登陆
- function auto_login() {
- if (!is_user_logged_in()) {
- //确定 WordPress 用户帐户来模拟
- $user_login = 'guest';
- //获得用户密码
- $user = new WP_User(0, $user_login);
- $user_pass = md5($user->user_pass);
- //登录并设置 cookies,设置当前用户
- wp_login($user_login, $user_pass, true);
- wp_setcookie($user_login, $user_pass, true);
- wp_set_current_user($user->ID, $user_login);
- }
- }
- add_action('init', 'auto_login');
将上述代码放到 functions.php 里面即可实现自动登陆
对于细心的读者附加说明和注意事项
- 有一个
wp-include/pluggable.php
文件定义了所有你可以重写钩入功能。WordPress 的 API 文档,尚不够深入,因此您可能需要认真检查实际的代码。 - WordPress 使用的密码是经过负责 MD5 哈希加密过的。在数据库中,密码存储在一个单一的 hashed。我们需要加密密码之前将它传递到 wp_login() 功能(设置表明密码已经过加密运算第三个参数)。显然硬编码的实际密码将会是一大禁忌。
无密码登陆
现在有种更好的实现方法,不需要知道帐号密码,只需指定用户名即可,实现代码如下:
- function auto_login() {
- if (!is_user_logged_in()) {
- //确定WordPress用户帐户来模拟
- $user_login = 'guest';
- //获取用户的ID
- $user = get_userdatabylogin($user_login);
- $user_id = $user->ID;
- //登录
- wp_set_current_user($user_id, $user_login);
- wp_set_auth_cookie($user_id);
- do_action('wp_login', $user_login);
- }
- }
- add_action('init', 'auto_login');
上面的两个代码,放到任意 PHP 文档里面,都会实现 WordPerss 用户自动登陆,至于是需要更安全的登陆方式,就需要管理员自己斟酌了!
文章標題:WordPress 代码实现用户自动登录
文章連結:https://www.wuyanshuo.cn/909.html
更新時間:2022年6月19日
1、本站所有資源均不添加推廣檔案或浮水印,壓縮包內若有廣告檔案和浮水印請勿輕易相信。
2、本站資源均為兩層壓縮,第一層7z(尾碼若為wys,請自行修改為7z)有解壓密碼; 第二層zip或cbz,無解壓密碼,可直接使用漫畫類軟件程式查看; 詳情可參攷解壓教程。
3、本站大部分內容均收集於網絡! 若內容侵犯到您的權益,請發送郵件至:admin#wysacg.top我們將第一時間處理! 資源所需價格並非資源售賣價格,是收集、整理、編輯詳情以及本站運營的適當補貼,並且本站不提供任何免費技術支援。 所有資源僅限於參攷和學習,版權歸原作者所有!