提醒:本文最后更新于 3323 天前,文中所描述的信息可能已发生改变,请仔细核实。
不得不说,大发的一些想法,还是不错的。
前几天,大发说博客可以用邮箱登录,不过我去测试了,没收到邮件,没试成。好囧。
因为大发没分享方法,我猜大发肯定是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-support.php和mail-login.php文件,详看github项目地址: https://github.com/kn007/wordpress-mail-login-to-dashboard
转载请注明转自: kn007的个人博客 的《通过邮件验证身份登录WordPress》





这是反人类的做法,使用起来过于麻烦。
@Sumhat: 正如你所说的,我并不否认这一点。
这玩意就像服务器用密匙登录一样煞笔,但却要好很多,服务器你要是没有密匙就登不了。而邮件你随时可以收发。
主要是你没有在某些特别公共场所登录过Wordpress,或者说Wordpress里面的资料并不大重要。
之前遇到过个案例,就是用wordpress做的企业站,因为在公共场所登录,而后里面资料被清空,而且利用了php的一些特性,把服务器也给清空了,当时真是我靠了。这还是因为wordpress后台登录有提醒功能,不然你都想不到这点。所以后来Wordpress有在后台增加了“登出所有其他会话”功能,非常实用。
因为对方也是用dropbox,而且是实时备份的,所以我看到某个php文件被修改,然后加了一些命令(非exec这些shell执行命令),而是利用php的unlink还有个什么,居然也能清空VPS,擦了。我现在都严格限定open_basedir。以防万一。
邮件,你甚至可以不用登录邮箱,把链接长度缩小一些,手动输都可以。
而且使用这个功能,原始功能也不会受限。。。
最后,总结,萝卜青菜各有所爱
就像我,极度不喜欢服务器用密匙,太傻逼了。
@kn007: 被清空VPS,应该跟权限的设置有关系,VPS最重要的就是权限的掌控
@World: 权限是www,但是php不知道怎么就越权删了根目录。现在用open_basedir限定目录。
@kn007: 你的前提不对,邮件并不是随时都可以收发,登录邮箱一样有风险。这样做是对把风险转加给邮箱。于其让 VPS 被黑,我更愿意让我的邮箱安全。
@Sumhat: 我上面说了,你也可以控制链接短点,或者生成短链,你在手机看了地址,直接在电脑输,不就保全两者了。
@kn007: 如果你想说的是类似 OTP 的验证方式,那就不用重复造轮子了, OTP 甚至没有延时。
@Sumhat: 打住,你想太多了。
起码博客不可能随便弄个OTP,而邮件是简便的方式。
还是那句话,有1000个不喜欢的理由,总还能有1001个不喜欢的理由。
不喜欢就不喜欢,觉得不好就不好。不要在这里太纠结了,这只是篇月末文章。
@kn007: OTP 不难,已经有现成的插件了
@Sumhat: 那好吧,你可以当作这是另外一种方式。。不要再纠结和讨论了。没多大意义,因为我发帖,不是推广产品。。。
代码逻辑或算法,有提高地方欢迎来谈。。
喜欢不喜欢看个人喜好,我不强求。
@Sumhat: 邮件不是随时可以收发的,我就不明白了,实在不行,邮箱写规则,转发到手机邮箱,手机会有短信提醒。没手机,那我也没办法,我觉得这种情况起码对于我来说很少。
至于邮件产生的延时,起码我还没遇到过,这么多年。
另外去公共场所一般都会带手机的吧?
怎么说呢,1000个不喜欢的理由,总还能有1001个不喜欢的理由。
跟某些应用没有账号是类似的吧,像telegram,登陆就是向手机号发送一个验证码,即便卸载之后,还是再发一个验证码登录;
36kr用过这种登陆方式,易用性不是很高啊感觉,每次都要验证还是有些麻烦的,尤其是我之前已经注册过了,但是36kr用这种登陆方式的时候,还非得要每次登陆只输入邮箱地址,然后通过邮箱链接验证来登陆,有时候觉得很智能,有时候觉得很傻逼,
觉得第一次的登陆时候的体验确实很好,但是登陆次数很多的话,就会比较烦了
@小怪物: 见1楼评论。
方法是可以选择,比如在熟悉的场所,我肯定还是用密码,方便。
去公共场所就可以考虑用邮件验证。
@小可: 我也是懒货。
不高级,多个选择而已。
@kn007: QQ登入选高级么?哈哈哈哈
@牧风:
欢迎,你的二维码大法啥时也分享下咧 
@kn007: 我觉得二维码才是王道!
@aunsen:
确实是,不过需要写APP麻烦,除非你愿意用带二维码的社交媒体登录
强大的wordpress 无所不能~~~
@夜枫: 确实是,api、钩子丰富
@kn007: 哦~~~记录的 token 放在wp_cache_set 这里的~~~soga~~代码看懂了,各种钩子看不懂.....
@夜枫: 看下wordpress说明就好了
总感觉开通了邮箱,关闭了用户名,就好玩了
@傅小黑: 那没必要。我还是喜欢多种方式登录,当然你说的这个也是一种方法。
而且我这个偏重点是不是使用邮箱地址登录,而是邮件授权登录。
这样安全
@小王涛: 嗯嗯,还好
牧风做的后台扫码登陆不错
@尽欢: 那个确实不错,不过需要自己做app验证身份。
@老杨: 哈哈哈,好吧
@kn007: 一年多后,添加了这个功能…………
@老杨:
我的评论切回本地了哦,欢迎大驾光临,但是目前还没有邮件提醒!
@Meekdai: 早该如此了!