|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
大部分网站,都要求用户登录。
9 a, b3 }* x C& v$ ~常见的做法,是让用户注册一个账户。4 r2 O \- d# A$ N
; i* G/ V0 y2 K# [8 c
& u; _1 O, s+ Y% F这种做法并不让人满意。) H# I; l( w' R) J
对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。
9 M/ M) L, u1 X$ G所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。" i) b; h" d& d! n9 W
本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
* S1 _$ p& }) J Z% K8 A一、OpenID
. y, Q& w, S2 [9 c6 b) q O9 {OpenID是最早提出的一种无密码登录。2 x/ {3 i6 @0 u
; F, E N' h' W2 f
! M! r m( c2 W( Y2 s- T它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。
$ L: k* x! |6 Q4 Z+ f所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
" z! f- H3 o: aOpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。
$ A$ j/ Q0 A" D" K7 V8 n二、第三方账户
* D2 k5 D( V7 z" `9 u9 C+ ~& {! hOpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。4 y# K; j/ }% B
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。
: e) }$ i1 J( X6 V1 x- u
) |* w- u9 W. E0 P
9 o7 g" K: X1 v# }% z! Q这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。* h( @ e7 [3 n" d. z( Y
三、Persona
' y }/ c0 f! h- a( r/ M8 x% K" {去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
3 E6 H% i, j- K6 W4 |" H; c
; V: B/ {7 _% `2 Z* A' O1 M8 b2 H. D7 g! L1 }7 l8 H2 Q' Y0 g
它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。8 n( o$ x# }& z$ u3 X; K4 ~
虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。
: h% E/ K/ V( M& a四、OAuth
/ {" G5 T* c5 d' x& |, T8 _OAuth协议其实与第三方帐户是一回事。" |' a+ E" `# N; f& S$ A
; V8 g; j2 W1 B& b2 h ^$ L. K$ K
7 }% T7 F. q- S; V0 }: ]第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。5 _7 o) x- g8 w4 W. z
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。0 B" P" d X* P; g% y4 K; a, `! c
五、Email一次性登录
" m1 Z" I% a- N! K! a# \上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。
; _6 S) V# f7 ^; m& f1 r他的做法很简单。用户登录的时候,只显示一个Email地址输入框。% C4 a( e1 ~3 M. E3 E
& K, T ]" |% F+ a' Y5 e9 q
9 I8 ]9 E6 ]" n" E6 Y用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。. a. {, r7 G& V
N+ S2 F$ ?8 l, g7 C2 F+ k7 L2 l C- j5 O+ P5 o
登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。- W4 A8 J- j& P( ? s- a0 x0 S4 X
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。
0 v( U9 S: { X9 X主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。7 j6 D; l" I. p( y+ _* b+ L/ o
总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
3 y! ~! ^( j) z& c想听听大家的意见,你觉得这种方法可行吗?( x4 Q& E4 l7 e* ^) f/ ~. `
(完)5 z3 z3 m$ B8 \ S6 G F Y, Q, U
作者:阮一峰
" ?' t9 H2 g5 P; ~4 v日期:2012年10月3日. g) a; g! d2 W$ V" j. Y* s
来源:http://www.ruanyifeng.com/blog/! O. f3 q8 ]- E7 x* b
|
|