找回密码
 注册
广告投放 虚位以待【阿里云】2核2G云新老同享 99元/年,续费同价做网站就用糖果主机-sugarhosts.comJtti.com-新加坡服务器,美国服务器,香港服务器
查看: 51|回复: 0

回顾网站的无密码登录方法 如何最简单实现

[复制链接]
发表于 2012 年 11 月 22 日 12:19:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
大部分网站,都要求用户登录。
5 K+ q, y% f* d, O; ~常见的做法,是让用户注册一个账户。
' n" o) r0 ]5 z4 S0 @7 o) k8 H5 U9 W4 `: A2 i' X6 B
) z2 g( _2 L, k# ^  R
                               
登录/注册后可看大图
+ b: w# ^) l- c
这种做法并不让人满意。6 f3 g- t* @8 Z$ i; o
对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。& i+ ]! n5 h# ~, u! m. _! Y3 m7 G
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。
/ u) I/ |* s1 k( v0 s7 M本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
" x( V4 K2 P, N, U一、OpenID0 Q( B0 f2 B6 J
OpenID是最早提出的一种无密码登录。
9 W; g* f5 K2 h# P: b2 N8 e% p- q" c$ S( \* ~0 W. \

" P" }) K* O+ A9 }' [- F' Y; K                               
登录/注册后可看大图

% T$ X: k" }: J, f# ]  |它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。
6 E: Q; }+ B; O& T所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。7 S; v4 c* g  E2 B) f/ b
OpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。. C2 X/ c/ x: Z6 x
二、第三方账户* H. y( [6 j) ]7 G
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。+ N8 E, v: O# t
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。' v1 Q# @/ b! P7 ]' t

# v/ P9 C9 X. h( r# o2 m
; q1 R9 z% q2 W, L& y# ^4 Z7 T/ A
                               
登录/注册后可看大图
; f+ v8 [0 Z/ L# W. Y# N
这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。
: j6 g! u- a* M* m8 j# Q% u三、Persona
9 m! V9 M, q4 ^# t( B4 J2 o去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。% S* ]8 E" w& a2 Z6 U

9 m5 v2 b0 g$ ^& g2 A

$ L+ b- F( t' S# d0 Y$ N                               
登录/注册后可看大图

8 G+ |; T& u6 l: s它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
6 y' R/ }4 h" c' I: Y: t虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。
4 S0 V  P1 ]! ?$ V" f' w四、OAuth
' t! n. e$ E* r2 tOAuth协议其实与第三方帐户是一回事。
! s8 @0 L) B( C/ y; V& t/ [) ?" m7 q+ j( E+ z2 C1 U6 H
9 u1 q5 p3 s$ P! J; a
                               
登录/注册后可看大图

7 N7 R" @* Q7 N第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。9 @- A/ t  l& H8 B0 t( P' w; h" ]6 w
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。+ @/ d% P) h. x% Q! c0 d; l
五、Email一次性登录
8 L' ]' W+ W( v8 D上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。  N, C' F. y9 e$ {' Z
他的做法很简单。用户登录的时候,只显示一个Email地址输入框。
! r2 _9 ]& d- A# E& w8 [% d
% G/ y+ t- F% v
3 w+ w- K% z1 |5 O, k
                               
登录/注册后可看大图

* M+ x9 y( I" l- g6 e用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。
- ^/ f2 @  m. g5 A3 G) [) K4 Q
) ?( t4 D, {0 B/ j2 w

5 l& g. N/ b! d, l5 h$ ]0 I' M                               
登录/注册后可看大图

9 o" q  D. i% t1 x" A登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。
# I0 Y; s' Y7 o: k+ i0 a$ `由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。
1 |- ^4 u3 V( N1 ?/ o* U主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。
+ @, |. p. F* M$ A总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
# O4 d" e# z5 J. P3 P3 ?8 Q想听听大家的意见,你觉得这种方法可行吗?
6 a/ ^3 p6 N4 b# m! _(完)7 G+ Z9 m' F0 \4 J# }3 }6 i
作者:阮一峰2 z) y/ I1 V9 }4 M) Z
日期:2012年10月3日/ X8 |# T" {# l1 d" d8 f) O& C$ u
来源:http://www.ruanyifeng.com/blog/
& C" u- K/ Y" T5 N  I
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2025 年 2 月 7 日 10:44 , Processed in 0.090505 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表