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

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

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

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

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

×
大部分网站,都要求用户登录。
- ?7 G* A( ^' x9 n- h/ s常见的做法,是让用户注册一个账户。* ]7 x, O7 [, Y) K0 d* \; \

- m6 C: w5 @. m, d' g# l, M

/ V9 k5 a+ \5 y8 e  I                               
登录/注册后可看大图
6 R6 B3 s+ D$ c+ b  w; s
这种做法并不让人满意。+ E/ F3 y$ Y1 F' ?, ]+ r
对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。0 K3 o9 E- Z* D/ d+ f5 ~1 p
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。
: i/ Y$ j& L$ C" a( W& Q4 k! W本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。6 u/ P# z; o' J9 z+ G1 Q) X
一、OpenID
: }8 H/ l) H" ?( I! [OpenID是最早提出的一种无密码登录。& O) w3 U. _# |0 H$ I9 r' o. q6 P
, \0 H6 u: T( Z: X+ Q$ S0 u
, L1 k# Q1 i: D, X. [/ V1 c' j
                               
登录/注册后可看大图
5 o, {. I. i; P% f
它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。/ g- H- l8 H7 v' k( I: w2 j
所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
) ]+ r' F* J- k" ?2 zOpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。8 F, }  K$ [4 O( U: u
二、第三方账户
8 ^* Q( K% g- T& T! XOpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。! R' \' U9 M5 C% ^% |: n. q
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。
% k. c# [: x6 X+ N# S9 ~' k
/ r, L$ j. n/ p& v5 n

' Q: p- Q6 `) S. \6 D8 @                               
登录/注册后可看大图

) c* E$ o- ~$ P) Z这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。
. _9 U6 L" U- }$ l三、Persona
% x) g1 w7 \: T去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
! a5 O) d- y2 |, M8 I4 B
/ n$ q) o7 a" E1 O  s4 Y
+ ]! D4 m' ^, |* H4 o% Y& |
                               
登录/注册后可看大图

$ a( J9 B5 ~1 T; N/ H它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
+ ]+ c. f2 V( @- b' Z. d. l虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。
3 P1 K' C6 G+ w/ Z# W四、OAuth
2 B' _  x7 }$ X; O- ?OAuth协议其实与第三方帐户是一回事。9 i( Y( J+ w9 n

& |; E* i# V1 f
1 \0 F( X8 G& g, H% S" t( m
                               
登录/注册后可看大图
3 w1 b- f: s3 N) F( d5 d
第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。
- t( x! h6 I8 ?4 Z' D5 B) `因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。% q( C$ N0 t* o/ u# g% E, {# t
五、Email一次性登录
6 V/ M- B% i  @上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。* R) h) o' D  C- J- n
他的做法很简单。用户登录的时候,只显示一个Email地址输入框。# z/ i0 \8 Z+ G3 p! E6 x% N
& `2 E/ r; v( K0 M8 C2 M

( m, f/ X  ~' D4 j& w                               
登录/注册后可看大图
  Q$ S3 ]& J# q; y
用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。  ^3 I  x+ m2 {9 g! r1 [1 n
" O% k5 J% G$ B* z

: Z1 I" n; F' {3 k                               
登录/注册后可看大图
: X% h6 y. |7 D9 ~+ b
登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。
. Y  s, M1 U# _7 L3 Z! |# O( b由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。% X  R$ g. ^& J: r3 ^7 f- I
主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。5 r: x5 d5 J9 r. q4 _
总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
0 P1 V, v$ j. t( G: |3 @+ f想听听大家的意见,你觉得这种方法可行吗?# f' I  T/ {3 t5 u4 r
(完)
% l$ v6 }2 \  }( E, X' L作者:阮一峰
9 {) D9 v: b% \; X. G5 S日期:2012年10月3日
- @0 P! t( f5 v+ T% o% X2 n来源:http://www.ruanyifeng.com/blog/
. T8 O+ d3 [* N: H
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025 年 4 月 29 日 17:23 , Processed in 0.091546 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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