|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
大部分网站,都要求用户登录。
. _) F W7 ?( [$ d! l常见的做法,是让用户注册一个账户。
! L. [, U3 o9 W" c5 G# O% Q$ H2 H+ Q# P6 q O- d, W6 ]2 @
/ Q5 M' ~& r; Y8 t5 p8 }, s% o这种做法并不让人满意。
9 x) ]) P6 @" x2 z2 A' k: a对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。# J1 G! n1 ]. l; T! y
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。' @) ^/ c) z; ?( e% C. \2 `* G, d
本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。3 C( ?' b4 [/ S- H( M5 V* W
一、OpenID
" l7 n0 X- Q; h6 m" |2 J, qOpenID是最早提出的一种无密码登录。: _( }) Z r3 G
- [4 {! V- o5 ^1 X) y7 J b1 m+ D* ~9 N$ p" `
它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。
4 }. R8 w& _. }$ f所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
: ]9 H* I& \5 x; `& p9 k; R6 NOpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。
! s1 h: p. i9 j! r5 a4 r二、第三方账户. q6 I. L) G& u, a
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。/ H2 f8 T/ U+ y
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。
. R2 w5 Z* ]) \: y- l t
% T5 B3 }$ |5 k* n8 K; y- q( f% b3 p3 @3 y" m
这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。
4 O& z8 X/ K( S. T3 r三、Persona
7 U P5 r5 k# r/ f; l5 A {/ J去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
" S) o- g1 [, \
( Q" P' D% R5 e9 `9 @
& O) R3 v5 N9 f" A6 O* i它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
! m3 z8 m. F; l% E" S! t! m虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。
5 _# @, u" b' K- V5 q) f四、OAuth
& M) [. Y" D8 j9 kOAuth协议其实与第三方帐户是一回事。
# i% D& i; U7 z) z; | h l: @" A' ~5 m% P) I2 T ^
) K. d% J' L1 U" {: P
第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。
3 e" G6 k, w/ q" E X因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。
2 }% P8 ` ^; O. O4 `五、Email一次性登录& X# m( n ^, T K4 }4 @2 F0 w
上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。
6 @9 V8 P- f: ?1 |/ ^0 O& H- _他的做法很简单。用户登录的时候,只显示一个Email地址输入框。( l/ p+ e* W3 @" v* [1 P3 i5 @
' g1 s/ b) k. F( ^
: v0 X! U) f& t8 [$ e用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。. b W3 ] G: o% m |
! I* ]1 r) }, L" L% W
7 _( ?3 _$ T+ }/ O登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。& H6 w, K8 R& K; c1 F0 u
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。. R0 r. R( V. N) E
主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。/ I1 S: C' Z2 f( v2 F8 v0 q3 S
总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
2 u" `- `# y" J1 U5 B7 {' P! Y想听听大家的意见,你觉得这种方法可行吗?9 I- o! h, Q" T- Y
(完)
/ `) n* E% B& Q& c1 X0 x作者:阮一峰8 t" @( N- E4 ]
日期:2012年10月3日8 ]3 T5 {; {6 d# Z
来源:http://www.ruanyifeng.com/blog/0 D2 B$ o- `' l
|
|