找回密码
 注册
【阿里云】2核2G云新老同享 99元/年,续费同价华为云精选云产品特惠做网站就用糖果主机Jtti,新加坡服务器,美国服务器,香港服务器
查看: 51|回复: 0

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

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

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

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

×
大部分网站,都要求用户登录。: i; z" Q; R/ `$ {1 u& S( l' N
常见的做法,是让用户注册一个账户。4 B$ _# @. |1 B% d& G# ^, }

# Y5 d& a- n- c- n# n4 \

/ S$ X' J) n! _: W                               
登录/注册后可看大图
, ?: {8 |  S( d8 s2 _
这种做法并不让人满意。
) S8 F( f; N0 H: ]2 P对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。
! K% i/ Z- \( X- z2 j; z. u% J所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。
- \# P' C( U- G% p  Z1 g; D本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。. k0 N# p8 Y/ {. l- \7 t
一、OpenID. d5 ?4 Z& H! W
OpenID是最早提出的一种无密码登录。0 b. d$ c  j8 l5 {6 @3 _
" A& x3 @! b3 p% r: O1 F
6 e$ K& n0 a  _4 z' J6 y6 ~
                               
登录/注册后可看大图

9 `) R( ]9 N* w: {它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。
) Y( w5 v, ]4 ?7 D0 Z所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。9 t, e8 X! s( e/ @
OpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。' f# T: T4 x5 f; q5 O
二、第三方账户+ p" X+ m1 B! x) @5 ?/ c5 W
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。
& t! \4 x2 ^1 n$ `% q( s因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。
2 x- g  {8 U* c1 Q  ^4 {& h7 c0 o, p

: x0 F  ]. U0 d( Y2 P                               
登录/注册后可看大图

1 X4 f9 B# r- B: M$ u这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。% C9 m$ b% \& ^; \
三、Persona
0 ?8 A, |! d% K% V' r# ^去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
$ b2 K" p) s) J% ^% \) s
1 z. Q: Y* {/ ~! o# k% z0 r  K

  f: m6 E; z$ @8 W                               
登录/注册后可看大图

% @6 M3 g! h) Q' e# a它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
# E- s8 B9 g4 i" g, H" _; q$ y虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。
' b# x! |& I6 j四、OAuth0 q2 o0 N/ T4 t( y" A+ f$ }# g
OAuth协议其实与第三方帐户是一回事。% {/ y  A) Z. T' v7 P

" Y0 N' ^8 |! Q8 [

  t9 d! s  V$ ~3 M: b+ A2 P9 c5 ]                               
登录/注册后可看大图
  C1 [( G# t  O
第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。$ n3 u, {! Y( E6 j! m
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。8 @2 }9 k9 o$ s/ K
五、Email一次性登录1 ]/ l+ b$ J& J4 J3 N* |
上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。! Y! U& ^* j. K5 ~2 \1 W: ?* z7 N8 }
他的做法很简单。用户登录的时候,只显示一个Email地址输入框。  S8 e1 ~0 _+ r7 R" @
7 ]0 [8 f! q+ F3 h0 h" D% y

4 P" |$ n. c' C2 T  Z5 M3 j                               
登录/注册后可看大图
9 U( m; L- n- t) O$ J3 p! z
用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。( Z" Y) m% N5 m9 l6 Y" i
0 m: a" O( z9 g3 X% z

& k  i- ?2 k4 S  }, Z& m  M                               
登录/注册后可看大图

1 w# o% d- f% z登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。( [# \; b+ f" J0 K& A
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。
- L, f$ r0 \+ t主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。
# \8 S  T4 ?5 g3 @/ `, O, ]. V. P总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
0 v5 f0 }" T, v0 f' P$ j8 c, u想听听大家的意见,你觉得这种方法可行吗?
+ c# }8 V. M: p2 ?3 L9 T(完)
4 r* C- v5 H4 P7 R8 ]+ S1 Y作者:阮一峰: b( s/ U+ x/ z( u
日期:2012年10月3日9 Z! O1 ^. f# v. U8 F; A" C
来源:http://www.ruanyifeng.com/blog/
$ B( u: k7 M* B* d% y# `, U
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024 年 11 月 17 日 18:46 , Processed in 0.129816 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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