|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
大部分网站,都要求用户登录。1 _; h* l5 h5 b7 A- ?
常见的做法,是让用户注册一个账户。4 t6 E. n, I! k9 r9 q( g
7 W& _# ^: g6 v4 C
3 }5 [- @7 @* {# E
这种做法并不让人满意。2 k' d0 i! W2 G. B( h* o+ i
对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。
% m6 G$ V) i7 m) r) O所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。3 h. Q3 t8 p- `) l+ K
本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
2 F9 U; Q' @% a一、OpenID
) D: [) L0 e; nOpenID是最早提出的一种无密码登录。5 Z6 e# h9 p. N8 M) s8 v/ { F1 d
! l/ o7 b" s, P# S ]' q
( v! M( j1 U9 \它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。
" j) S( C/ D1 s' N x0 {所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
S/ y+ `3 N; ?3 p. MOpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。; a/ O5 z! G' a8 [. y5 k
二、第三方账户* b2 I: d5 U$ A. f9 |0 @
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。
! O8 R' H+ |. \0 s因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。$ j6 B% s9 G. H4 t+ I! Y
2 K7 L3 [' O8 {1 @5 R; n! J
0 {7 n/ v0 Z5 n8 ^8 Q9 V8 O这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。
/ X3 K( g2 G7 k; X. e三、Persona
6 ?5 Y# i9 c; l4 m' t& b去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。9 M9 D7 \1 u( ~) N; H; {
' `2 k0 C& c/ G2 T! s m4 H5 y* s; \( F' A( U2 S' w
它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
3 x( k' L$ P7 Q5 o+ l K虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。! J2 m+ p* z3 h. A
四、OAuth
: d8 _8 y3 X$ ?. wOAuth协议其实与第三方帐户是一回事。4 l9 p+ i0 p2 i2 O ]% R( R, Z
* t0 ~) x0 X, L" m, |
5 k4 ]% m4 h0 [$ D第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。
/ v2 J+ J/ N/ v, H/ R6 ]9 R因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。
% D1 L! l7 m6 _/ e0 s# L* w7 Y) t五、Email一次性登录; L+ D* ? E+ X) U$ f( y% l
上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。4 c$ y% h- _7 S7 q; M* O2 p2 u$ N/ @; N
他的做法很简单。用户登录的时候,只显示一个Email地址输入框。
; L3 ?: V, T+ i$ l3 r
6 A! c4 v+ v" {% r& N, z+ @9 g4 D" {, f
用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。0 k& z/ U: O1 N( m+ Z
( W, Q0 C9 x, R. j" I4 L
5 y0 B- d; A6 E- D7 r4 L w登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。4 g ], @9 T3 S! v- v5 E+ h0 V0 E
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。0 U* O- G2 @0 f9 y0 Y2 j
主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。" O; K0 d& Q. U1 W
总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。3 Q0 P: e6 v; F$ `& O
想听听大家的意见,你觉得这种方法可行吗?
6 ^) M. K. p- ^7 R" K) S2 o(完)( J- y9 C9 t" t& z B' x& C
作者:阮一峰/ [6 ?" ]5 ~! C- ~
日期:2012年10月3日+ Z6 G+ x! H3 v0 L" P, Y* \
来源:http://www.ruanyifeng.com/blog/
( l9 D% X$ ^: T- r+ S |
|