|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
大部分网站,都要求用户登录。
$ q6 u' Z1 ^6 Q9 h2 _7 `: a常见的做法,是让用户注册一个账户。* D* J! ~3 ^" g
8 w- z: l- ~# A
- C/ k9 ?2 u# O# r+ D( f3 `& A' e( ^
这种做法并不让人满意。
3 o2 V- k* L3 O: |对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。* A/ U8 a: s; @
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。" |7 U" J5 v9 j E: S1 M. q7 N
本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。5 p& P: ~6 a+ F" z- h* y) _
一、OpenID+ G! O4 {1 u% y
OpenID是最早提出的一种无密码登录。6 X& n7 k- ~# u, \/ L- ~
/ E$ s) C* P( Y8 K$ b; k
( M& m4 A I! j; L- U它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。 G- y& p- | F' E7 U
所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
& \) L* |4 {/ ^( U4 POpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。
, R/ W$ `) o- G- @% \/ ?2 b2 U二、第三方账户( v3 J, f; c2 J! F
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。
9 U% X+ j4 b% L$ q* @因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。. u8 w* d9 U5 l& {, r) W
4 L A6 g; e0 h/ F V& s# R
$ W i3 n4 h- ?这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。, G3 j/ ?& P; \
三、Persona. o: ~* J* C* |$ |% z" m0 e
去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
3 q) V% ~$ q( R& b+ v3 A' X' s7 t$ Y4 A/ g a
+ z3 n7 F2 ~& V7 {; i它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
, @2 t# l' @& A% g虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。
! ^. }" z$ P1 {; y0 d0 ~四、OAuth
# ?$ u4 `2 q0 q/ F" kOAuth协议其实与第三方帐户是一回事。$ T1 X( Q1 T: ^. L* }
' ^, }* V4 e, F
3 G" b/ z! ^% ?4 C4 b! U2 l第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。
[0 b' [1 {& c z* C/ c因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。
8 F* j- z% N# u. o5 N五、Email一次性登录
- F1 M5 {: @/ Q, P2 O上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。 @) Z% }: ]- E7 {3 E3 J
他的做法很简单。用户登录的时候,只显示一个Email地址输入框。
+ I; C1 S5 h" S( E! e/ [4 u
1 _3 N" ^/ W4 F8 k" ?$ N1 |3 q* x' b! |! |5 p9 p# G
用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。4 [6 G, j: Z9 p# N
2 k2 z8 I& ]4 m/ q, \9 J
4 x6 n1 h: u, x+ J3 K C; C T登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。( y: {5 v) g$ d! V/ z* o. Z4 D9 L
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。, V9 w/ z' p/ g
主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。
! @3 P1 S0 e! j: E9 P总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
. D5 O5 N+ E- J6 t$ E' d3 ?想听听大家的意见,你觉得这种方法可行吗?; K$ X9 Z; o+ `6 b2 f g
(完)
! O5 F# u/ w6 C) B$ w! |5 t作者:阮一峰9 y" |- c) o2 J( R; ^+ R: C
日期:2012年10月3日
+ L. r9 }$ C+ B( S9 Z来源:http://www.ruanyifeng.com/blog/. y, o: d% |" e8 q) ^* q
|
|