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

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

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

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

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

×
大部分网站,都要求用户登录。
5 B' D; [  R& M/ \常见的做法,是让用户注册一个账户。
6 j3 l; N/ a( [0 P
$ F0 S! U2 i( ^8 }2 H8 G* ]6 b
3 o5 t) I- H$ h" ]1 R- [& }
                               
登录/注册后可看大图
5 K  r/ t, P, I* r
这种做法并不让人满意。* z+ X% A/ A" W* v% y
对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。6 K# x+ `. H/ G6 a- ?  x( Y
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。
3 S+ J& X& N; m2 b  r本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
1 [# V' k' h+ A9 R6 z2 k1 \* e一、OpenID
4 \5 E+ F) c5 hOpenID是最早提出的一种无密码登录。
6 F" `" u, a4 n# p. T8 e% o4 ^$ f1 ~2 p' r2 G& c

' _6 z/ d- G$ U( \% S) N                               
登录/注册后可看大图

7 _" k, n' K. J它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。
9 k; c* T5 g( e$ k$ L; s所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。9 C+ B) ~& t7 R
OpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。
& H' E" V- H3 m5 @$ I* Z7 V5 D二、第三方账户
+ V+ l! l3 P( XOpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。' s4 ?& ]% i$ x- u/ m
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。
% u$ y! {: r# J; t2 M% E: B7 }! e: t" c, \: R5 B  E

+ E# Q3 W0 A/ M( }8 ]/ A9 T                               
登录/注册后可看大图

+ N: I$ B3 ^# Z这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。
- O' ?+ ~/ @3 O( n; K1 \三、Persona. U4 j) Z" V4 c) v5 v$ ^8 c+ ]
去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。0 p& m# C/ X: I( z# P7 ~

% c+ J' Y- Y. R7 B  p

& s" d5 G4 V0 v# t# R3 f) w- \                               
登录/注册后可看大图

$ |+ @2 `* f0 }) E/ x; V它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。1 C3 B  Y$ P# D; s" w4 @. O: ?
虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。) A4 }- f: R; |) V( q* j# D
四、OAuth& z; m4 O3 G8 _3 H6 Y& C/ g. W4 q4 U
OAuth协议其实与第三方帐户是一回事。
: s& z  V0 a6 S7 k8 j; |
  Y4 z5 ^3 ?  g$ O7 Y

+ X- M1 @1 ]& q3 k7 o2 ~                               
登录/注册后可看大图

; m* f& |- n0 j) N7 N3 X) g第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。
: _3 h2 }1 e6 Q; e+ T0 Z: M因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。
6 I  m" f2 H/ f+ X5 }& `0 n5 ]五、Email一次性登录
; C" ]8 R5 }- w" R9 e上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。7 t, M/ h2 x: v! e; Z3 B
他的做法很简单。用户登录的时候,只显示一个Email地址输入框。5 M+ d5 ~* _2 q' K1 ~3 D" g, W/ r

8 k" U  S4 m# D( K) w* U9 E: M7 X7 l
  \0 c$ V  }( J" R% W: E8 t
                               
登录/注册后可看大图

) x- D! u  V" p! I用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。& J# @9 h1 x& z0 R1 V- j

& k! p1 V; s7 t8 e0 I2 Z/ R' n) B

' t) U0 M2 i# P% m7 M5 S& D) a                               
登录/注册后可看大图

) s5 G8 P8 g/ }: n登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。
  w2 R) L- t: s由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。
+ c* ]. E' t, U$ B! M" y5 g主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。% L1 e* l8 C4 ^! X9 Y+ T' P' h
总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。) Z8 |4 s4 H& Z+ I
想听听大家的意见,你觉得这种方法可行吗?
6 e: V. _+ E+ D; i' A(完)& b4 m- c0 P* s# N/ V8 \1 M& y! ]
作者:阮一峰* q+ x$ x$ P4 p, p- ]
日期:2012年10月3日! D; B; Q: {) k' m
来源:http://www.ruanyifeng.com/blog/1 E- s! Q) _5 p1 T
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025 年 4 月 22 日 00:25 , Processed in 0.017510 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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