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

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

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

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

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

×
大部分网站,都要求用户登录。
( D. Y' O9 d6 j3 z常见的做法,是让用户注册一个账户。
5 p5 v* e3 U9 k. A3 Z+ S# Y! O* M1 ~% V" M5 C0 ?
& g; R& J$ r/ b% n9 c: {! `
                               
登录/注册后可看大图

0 o8 N2 H& B+ b3 ~* C这种做法并不让人满意。6 [& j& Y- Y  w& q4 T% i& M2 X$ x/ J
对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。) ?6 w: a; r3 {
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。0 U9 @. u- t5 p! N
本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
- @! a, ]( w& x4 S/ _2 B一、OpenID6 b) b* t; w% `$ f( \3 x1 ]9 [
OpenID是最早提出的一种无密码登录。
" w) d8 y" P- F9 c% v; i+ A  |
, B; b$ K2 d7 M( K1 w
4 \" t0 s+ O0 V$ N  H6 O5 ?
                               
登录/注册后可看大图

  Y$ N1 d; C) x. Y" N" G2 H" Y6 X, \它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。
1 k0 @" m8 L, l$ f5 {/ ~所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。- G4 Q: A0 z( Z9 b- I( o
OpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。
  n- ^' i3 Q+ w) u二、第三方账户$ y2 J6 k9 l1 V2 V$ p
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。
& f, a( f* N& f, D* q- g# y因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。
7 P" v0 w7 \" o7 s: y& m- A! W, B, f# `" ~* `* P2 F

9 R0 D+ A$ k" N" }+ r2 |3 e, u                               
登录/注册后可看大图

" X: R3 L0 |: s' [8 }6 J这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。4 N% |, E1 O$ F- B4 _
三、Persona
# y' ^0 z/ z$ m9 l8 G% c1 l$ `去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
; n% y& ^0 x8 G' W+ m0 y% d/ M4 O9 M7 ]* ?6 G# B4 U

: n# H; y# q! [2 R9 m                               
登录/注册后可看大图

% r7 X: o) ~9 ]  A; A它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
9 B% P2 x! m. f( E虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。
5 R7 l0 \. M, ]: e2 H* |四、OAuth
3 }; A5 _& Z+ R% B7 fOAuth协议其实与第三方帐户是一回事。
! x/ F- R: v- U% C" V% V. @4 ?5 K, N7 G9 j8 w7 {; W
) h1 P8 W0 l! e9 B0 n
                               
登录/注册后可看大图
. K* P1 U4 N  c
第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。5 _4 |  t7 ~% P: f8 p
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。
0 f" z7 e! p- p+ X. C$ {五、Email一次性登录7 d% V. x0 c; Q
上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。
/ a% t5 U; D% S, }8 w. b. I他的做法很简单。用户登录的时候,只显示一个Email地址输入框。
; {" p6 y! N$ e+ r2 q; v6 j6 m# z+ D$ m( Y, S
9 D  y) K! [% e7 O% i: ]
                               
登录/注册后可看大图
3 W6 C& m. [- `
用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。
2 f  W7 y* `3 m4 y
8 v% f+ o6 ~7 \% V, J
# x) x; K9 l. c. \& g# F
                               
登录/注册后可看大图

8 x& f. [! [, y: G) }登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。- o; A% N; j, G
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。
5 w3 K; o2 P) K! I& z* D3 t主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。; f6 Q* j/ L" U0 Z8 R6 d2 }, M
总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。* R! C! _8 c# v+ I! ?
想听听大家的意见,你觉得这种方法可行吗?
; k, [6 q1 d1 X" x6 X1 B(完)# o+ g0 v) h6 H, q5 e: _" C6 E% f
作者:阮一峰
: D! d: a7 y% ]) G: E$ N* L9 L日期:2012年10月3日
5 r; f# }  N5 ^7 n; A来源:http://www.ruanyifeng.com/blog/3 T* g/ d, \5 P, ~! X% y+ R
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025 年 4 月 22 日 01:35 , Processed in 0.019049 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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