找回密码
 注册
房产快测算-Fckcs.Cn华为云精选云产品特惠【阿里云】2核2G云新老同享 99元/年,续费同价新注册的朋友如何升级转正
查看: 136|回复: 0

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

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

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

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

×
大部分网站,都要求用户登录。: a8 Z# H/ R) \* a' J4 l
常见的做法,是让用户注册一个账户。
! R1 ?4 ]4 M( X! B
8 N3 z  }2 s, k2 M$ H/ \
: w; O) D: y0 I$ M5 {: v( w
                               
登录/注册后可看大图

! W' T) A" Q1 l. c3 o这种做法并不让人满意。
% ~3 \1 _1 F% H3 K对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。6 }* c, k' n7 W. n! K
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。
( n0 U4 `) x* c/ k, F本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
4 [2 @' N7 b# w' u一、OpenID
; G! h0 Y4 ^8 f4 g, d/ FOpenID是最早提出的一种无密码登录。
$ a) ^& y: {2 I& E6 z% i6 _
: t1 B3 d7 u  @2 M# V  E% d( R

0 l& i1 u- d( E/ ?7 _                               
登录/注册后可看大图

  T( O; V0 Y9 y* J! B% ^- Y它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。
4 \- f( @2 g% p所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
: g" l- t' P' R; k5 _! EOpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。
6 r" p" l4 m3 ~* M8 `9 C2 D二、第三方账户
: D/ I+ q" y0 [* K& pOpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。( v' c* B2 R* n8 }+ K
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。6 Q) P3 g, a! N
' l9 n& I; g' m9 M  M+ T6 ^+ x+ y
0 `$ K, c' W6 h' e8 C
                               
登录/注册后可看大图

( v% a, }2 e8 C, [这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。
3 m5 a. O. ~/ d" s6 \3 U6 d三、Persona/ K0 g; Q  }, Y8 ~7 g' F
去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
: v7 F1 A2 F  L# a, b9 ]8 ?5 b3 j" ^
. J- u: k! C  ^" j

. ]; z9 O9 m* G* G( `! D0 ?                               
登录/注册后可看大图
, }8 ^7 `& V+ {
它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。- H. G7 }% c* W0 Y+ a' r* v
虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。5 O$ G3 N# E& T8 D" K: ^
四、OAuth
9 z, S, @) E+ W9 n$ zOAuth协议其实与第三方帐户是一回事。+ ]5 d" \6 U. a6 o! g+ z( }" ]

5 v+ I4 t1 o/ i9 M" o1 Y; u

7 I* m; ]% \  |                               
登录/注册后可看大图
) ?# n" Q5 N% L1 `, I# D
第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。* i, M, W& _* c5 O
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。3 o5 F. B- R1 o; Z
五、Email一次性登录
! W$ q* L' o8 }8 U% d上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。
- c4 I8 s# s, }' r0 K5 \& X) r他的做法很简单。用户登录的时候,只显示一个Email地址输入框。
) S: _+ L- ~: Z; N0 O; s3 \6 `
: z) r, ]* m5 T4 n4 X
& M2 _, Y# f- c) `* V! L( h& X# n5 I
                               
登录/注册后可看大图

7 |, ^9 @' S2 o1 J% h8 h) G用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。' L! s* j5 R* B2 r2 D6 ]
1 \, ~% F; n( W: m

, N; G% g6 G& I  o9 @, [                               
登录/注册后可看大图

' x$ K4 W1 p1 m8 d7 Y登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。+ C1 H  e6 |$ i* V2 H( y" i" L" l5 K; v
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。
5 [5 o/ P+ h6 _7 d$ m% q3 E" n主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。
5 T" n, n7 F7 B/ U5 x- G. G- P& H总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。) \9 ?6 o* R8 N5 K: z
想听听大家的意见,你觉得这种方法可行吗?
0 A# d3 ~6 ?5 F! f5 i(完)
9 y! W* S4 T) Q# Y作者:阮一峰
4 S5 a4 H" V8 {8 ?1 K! Z( q# @' Y日期:2012年10月3日
& M, W+ n) T; y% ~9 U来源:http://www.ruanyifeng.com/blog/
# [, t( X2 }, E7 }, g+ p
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026 年 10 月 11 日 01:06 , Processed in 0.084198 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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