!
也想出现在这里? 联系我们
广告位

WordPress 代码实现用户自动登录

WordPress 是一个伟大的博客引擎。它是灵活的、可扩展、易于调整和配置集成到现有的网站。然而如果你有一个现有的网站,提供用户认证和管理能力,让 WordPress 接受这些证书(在时尚的单点登录)可能是一个挑战。

在多人共用一个帐号的情况下,有这样一种需求,我不需要知道 WordPress 的用户名和密码,就能自动登录到公共帐号。这样的需要该如何实现呢?

在我们开始之前,我应该注意到,有许多可用的b D O \插件使 WordPress 的一些流行的内容管理系统在整r } 6 . Z合。我们的要求是有点不同。我们想绕过 WordPress 的认证机制结合在一起,通过该网站的主要部分的用户登录。事实上在一个良好的综合网站,界面应使 WordPress 的网V ] e U V页和网站的无缝的用户休息之d E % 9间导航。我们的目标是写一个 WordPress 插件,可以自动验证用户已经登录到父网站(授予用户访问编辑博客的内容)。所有其他用户将会有一个未注册的访客的权利。

在我的设置,主要网站具有基于角色的d W k Y y权限和 WordPress 安装只有每个角色的一个帐户(即管理员,编辑,用户等)。该插件检查用户登录到网站,然后模拟一个 WordPress 随时登录用户导航到博客的作用h ` v ` r I \ C h。你应该能够为自己的需要定制方法。

利用 wp_signon() 模拟用户登陆

  1. function auto_login() x e v M3;
  2. if (!is_user_logged_in()) {
  3. //确定 WordPress 用户帐户来模拟
  4. $user_login = 'guest';
  5. //获得用户密码
  6. $useO a j + 3 xr = new WP_User(0, $user_login);
  7. $useW j `r_pass = md5($user->user_pass)d 1 u;;
  8. //登录并设置 cookies,设置当前用户
  9. wp_login($user_login, $uN q . N m 4 hser_pass, true&/ $ Z C ] 8#41;;
  10. wp_setcookie($ux 8 3 S Z ] 9ser_login, $user_p# 2 C w * v 6 mass, true);
  11. wp_set_currk , f b j p 9ent_user($user->ID, $user_login);
  12. }
  13. }
  14. add_action('init', 'auto_login');

将上述代码放到 functions.php 里面即可实现自动登陆

对于细心的读者附加说明和注意事项} l I / 8

  1. 有一个wp-includ( { ( % te/pluggable.php文件定义了所有你可以重写钩入功能。WordPress 的 API 文档,尚不够深入,因此您可能需要& J K Z 6 1 r认真检查实际的代码。
  2. WordPress 使用的密码是经过负责 MD5 哈希加密过的。在数据库中,密码存储在一个单一的 hashed。我们需要加密密码之前将它传递到 wp_login() 功能(设置表明密a V T } V ) +码已经过加密运算第三个参数)。显然硬编码的实际密码将会是一大禁忌。

无密码登陆

现在有种更好的实现方法,不需要知道帐号密码,只需指定用o x . k . H g Z户名即可,实现代I ) k [ N p p _ 1码如下:

  1. function auto_login()@ ~ m B ?; {
  2. if (!is_user_logged_in()) {
  3. //确定WordPress用户帐户来模拟
  4. $user_login = 'guest';
  5. //获取用n g ) T ? $ H户的ID
  6. $user = getw 8 V (_userdatabylogin($user_login);
  7. $user_id = $user->ID;
  8. //登录
  9. wp_set_current_user($user_id, $user_logiM 5 : - 3n);
  10. wp_set7 w ~ N /_auth_cookie($user_id);6 E L A G T E K
  11. do_action('wp_l| a _ F y P 8ogin', $user_login);
  12. }
  13. }
  14. add_action8 I ] t0;'ia { _ gnit', 'auto_login'\ k / 2 j *41;;

上面的两个代码,放到任意 PHP 文档里面,都会实现 Word| q ; + J l k APerss 用户自动登陆,至于\ L 4 t * |是需要更安全的登陆方式,就需要管理员自己K j $ @斟酌了!

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

使用polylang时如何确定页面的当前语言

2022-7-15 14:40:47

WordPress教程

WordPress完美解决文章ID不连续的方法

2022-7-15 14:41:56

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索