kn007的个人博客
♥ You are here: Home > 软件与网络 > php > 通过邮件验证身份登录WordPress

通过邮件验证身份登录WordPress

by | 93 Comments

提醒:本文最后更新于 3323 天前,文中所描述的信息可能已发生改变,请仔细核实。

8828ff221e17893fa8ebbb6

不得不说,大发的一些想法,还是不错的。

前几天,大发说博客可以用邮箱登录,不过我去测试了,没收到邮件,没试成。好囧。

因为大发没分享方法,我猜大发肯定是init钩子+AJAX请求。至于链接有效性,我就不知道大发是怎么控制了(猜是用transient或session)。

个人觉得免密码更安全一些,特别是在公共场合,毕竟邮箱现在可以扫码登录,也安全。

引自大发的话(我就不罗嗦太多了):这种方式看上去貌似有些违反直觉,但是其实这个比用密码登录更加安全。如果有人猜中或者破解了你的密码,在你更改密码之前他们都可以无限登录。你可能都不知道有人登录了你的帐号。使用邮箱登录:如果有人试图登录你都会接到通知、登录链接15分钟后就会失效、登录链接只可以使用一次。

嗯,我这次写的mail-login.php借鉴了大发的登录版面,但使用传统的form表单,而非大发使用的js。

除了采用传统表单,所有交互界面,一律用wp_die代替。使用到WP Object Cache API使用了Transients API保存一次性链接密匙,有效期10分钟。所有动作全部封装成函数了,可以拆分拿去用。因只是用晚饭时间写的,所以也没怎么测试,有bug可以提。

本产品任意主题可用,只要将以下两文件放在主题目录里面,并且在functions.php加载mail-login-support.php即可。

建议使用include,在funtions.php添加如下:

include(get_template_directory() . '/mail-login-support.php');

具体效果:
mail-login-supportloper-mail-login
QQ截图20150727232407

mail-login-support.php和mail-login.php文件,详看github项目地址: https://github.com/kn007/wordpress-mail-login-to-dashboard

转载请注明转自: kn007的个人博客 的《通过邮件验证身份登录WordPress

donate
有所帮助?
Comments
93 Comments立即评论
  1. 回复

    这是反人类的做法,使用起来过于麻烦。

    1. MOD回复

      @Sumhat: 正如你所说的,我并不否认这一点。
      这玩意就像服务器用密匙登录一样煞笔,但却要好很多,服务器你要是没有密匙就登不了。而邮件你随时可以收发。

      主要是你没有在某些特别公共场所登录过Wordpress,或者说Wordpress里面的资料并不大重要。
      之前遇到过个案例,就是用wordpress做的企业站,因为在公共场所登录,而后里面资料被清空,而且利用了php的一些特性,把服务器也给清空了,当时真是我靠了。这还是因为wordpress后台登录有提醒功能,不然你都想不到这点。所以后来Wordpress有在后台增加了“登出所有其他会话”功能,非常实用。
      因为对方也是用dropbox,而且是实时备份的,所以我看到某个php文件被修改,然后加了一些命令(非exec这些shell执行命令),而是利用php的unlink还有个什么,居然也能清空VPS,擦了。我现在都严格限定open_basedir。以防万一。

      邮件,你甚至可以不用登录邮箱,把链接长度缩小一些,手动输都可以。
      而且使用这个功能,原始功能也不会受限。。。

      最后,总结,萝卜青菜各有所爱 :mrgreen:

      就像我,极度不喜欢服务器用密匙,太傻逼了。

    2. @kn007: 被清空VPS,应该跟权限的设置有关系,VPS最重要的就是权限的掌控

    3. MOD回复

      @World: 权限是www,但是php不知道怎么就越权删了根目录。现在用open_basedir限定目录。

    4. LV1回复

      @kn007: 你的前提不对,邮件并不是随时都可以收发,登录邮箱一样有风险。这样做是对把风险转加给邮箱。于其让 VPS 被黑,我更愿意让我的邮箱安全。

    5. MOD回复

      @Sumhat: 我上面说了,你也可以控制链接短点,或者生成短链,你在手机看了地址,直接在电脑输,不就保全两者了。

    6. LV1回复

      @kn007: 如果你想说的是类似 OTP 的验证方式,那就不用重复造轮子了, OTP 甚至没有延时。

    7. MOD回复

      @Sumhat: 打住,你想太多了。
      起码博客不可能随便弄个OTP,而邮件是简便的方式。
      还是那句话,有1000个不喜欢的理由,总还能有1001个不喜欢的理由。
      不喜欢就不喜欢,觉得不好就不好。不要在这里太纠结了,这只是篇月末文章。

    8. LV1回复

      @kn007: OTP 不难,已经有现成的插件了

    9. MOD回复

      @Sumhat: 那好吧,你可以当作这是另外一种方式。。不要再纠结和讨论了。没多大意义,因为我发帖,不是推广产品。。。
      代码逻辑或算法,有提高地方欢迎来谈。。
      喜欢不喜欢看个人喜好,我不强求。

    10. MOD回复

      @Sumhat: 邮件不是随时可以收发的,我就不明白了,实在不行,邮箱写规则,转发到手机邮箱,手机会有短信提醒。没手机,那我也没办法,我觉得这种情况起码对于我来说很少。
      至于邮件产生的延时,起码我还没遇到过,这么多年。
      另外去公共场所一般都会带手机的吧?
      怎么说呢,1000个不喜欢的理由,总还能有1001个不喜欢的理由。

  2. 跟某些应用没有账号是类似的吧,像telegram,登陆就是向手机号发送一个验证码,即便卸载之后,还是再发一个验证码登录;

    36kr用过这种登陆方式,易用性不是很高啊感觉,每次都要验证还是有些麻烦的,尤其是我之前已经注册过了,但是36kr用这种登陆方式的时候,还非得要每次登陆只输入邮箱地址,然后通过邮箱链接验证来登陆,有时候觉得很智能,有时候觉得很傻逼,

    觉得第一次的登陆时候的体验确实很好,但是登陆次数很多的话,就会比较烦了

    1. MOD回复

      @小怪物: 见1楼评论。
      方法是可以选择,比如在熟悉的场所,我肯定还是用密码,方便。
      去公共场所就可以考虑用邮件验证。 :mrgreen:

  3. :grin: 额额额。。。这太高级了吧,不方便,我追求的就是方便,我是个懒货!

    1. MOD回复

      @小可: 我也是懒货。 :arrow: 不高级,多个选择而已。

    2. @kn007: QQ登入选高级么?哈哈哈哈

  4. 回复

    :razz: :razz: 路过

    1. MOD回复

      @牧风: :twisted: 欢迎,你的二维码大法啥时也分享下咧 :roll:

    2. LV3回复

      @kn007: 我觉得二维码才是王道! :!:

    3. MOD回复

      @aunsen: :cool: 确实是,不过需要写APP麻烦,除非你愿意用带二维码的社交媒体登录

  5. 强大的wordpress 无所不能~~~

    1. MOD回复

      @夜枫: 确实是,api、钩子丰富

    2. @kn007: 哦~~~记录的 token 放在wp_cache_set 这里的~~~soga~~代码看懂了,各种钩子看不懂.....

    3. MOD回复

      @夜枫: 看下wordpress说明就好了

  6. 总感觉开通了邮箱,关闭了用户名,就好玩了

    1. MOD回复

      @傅小黑: 那没必要。我还是喜欢多种方式登录,当然你说的这个也是一种方法。
      而且我这个偏重点是不是使用邮箱地址登录,而是邮件授权登录。

  7. LV2回复

    这样安全

    1. MOD回复

      @小王涛: 嗯嗯,还好

  8. LV5回复

    牧风做的后台扫码登陆不错

    1. MOD回复

      @尽欢: 那个确实不错,不过需要自己做app验证身份。

  9. LV5回复

    ;-) 还是放弃折腾了,怕太方便了。

    1. MOD回复

      @老杨: 哈哈哈,好吧

    2. LV5回复

      @kn007: 一年多后,添加了这个功能………… :evil:

    3. MOD回复
  10. 我的评论切回本地了哦,欢迎大驾光临,但是目前还没有邮件提醒!

    1. MOD回复

      @Meekdai: 早该如此了!

;-):|:x:twisted::smile::shock::sad::roll::razz::oops::o:mrgreen::lol::idea::grin::evil::cry::cool::arrow::???::?::!: