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

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

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

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

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

×
大部分网站,都要求用户登录。
, c& J8 o' h# O! k; _) A2 Y, Q1 n常见的做法,是让用户注册一个账户。  i/ a3 l" P2 P

) [) l+ i, m; ?1 ^
7 {9 Z  J/ H5 K- ^" b) {/ C) n8 q3 V
                               
登录/注册后可看大图
# c8 R9 @% ~" Y/ Y! q9 a
这种做法并不让人满意。
" p- f& r+ z+ Z, i对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。
: t: B+ i0 e9 g! U. c' |所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。( h; ?1 n* z9 X8 v- R; L: E) f2 [7 t
本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
% x# l: b# i; }' h' m4 ]一、OpenID# q+ }2 S4 A- T) a: A
OpenID是最早提出的一种无密码登录。6 D) |& [8 h) p0 |' [5 c' B* E: B  R
3 J% `! i' g) ]- U; G
2 O: {, S9 @" `' F) q% v# }
                               
登录/注册后可看大图

" L/ p0 {+ A% |. d) b! @它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。8 ?# z# O- X( r& l7 f, Q2 q. }) A
所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
! S( e4 c$ M  l8 o- ]1 GOpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。
. f: d9 c' y+ q# m& z* x二、第三方账户8 c6 d: d, A. `0 v
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。
  n0 {' x3 P! r* @因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。6 g. s$ g! K/ e& h9 o# d
8 }! o1 _7 K4 ~4 K8 K& z# f" P  f

: B- x% M( e, \& _" G! e                               
登录/注册后可看大图
0 }0 \6 G( A, M3 N% k# r3 c
这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。& S8 Z  v4 O9 q8 a- t5 A. @: r( ]& ~7 t
三、Persona
  s0 u1 B4 \  j$ B! e" n; e8 `去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。4 f0 }4 K0 g% z3 F" b
) j0 d2 T* E7 F* P4 V' b
9 m; N; ?8 N3 Y( n
                               
登录/注册后可看大图
& S  i+ e5 S! j! @, E4 O7 O
它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
; F" \* h7 B# p) {' Q虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。5 w" |  b5 r* Y1 z5 D/ \2 D
四、OAuth! k/ p7 a- M1 Z9 D: u) j
OAuth协议其实与第三方帐户是一回事。
: [/ J* Y* W0 y* e1 c) H! J" k  Y  A7 Q

* `4 x; X; s- `3 \( e/ x8 ^; B                               
登录/注册后可看大图
7 R: [2 c) L$ U  x' h
第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。4 U- Y2 L+ b9 j- [
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。+ H# s+ G! f# p" _
五、Email一次性登录
+ @5 \3 S) t  H$ L上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。
% c$ j. w2 v  i, M# `8 G  G5 Z% }! F/ `他的做法很简单。用户登录的时候,只显示一个Email地址输入框。
- u! t; r+ }! b
$ b. c, L; c9 I3 E' J3 _, `1 y7 u

% w" T$ v1 n9 C  J$ W' [                               
登录/注册后可看大图
; v+ c' n# p; @+ p+ |5 G
用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。
0 v, Z% _  y5 |' m$ E0 S9 Y
4 d, ^4 `" J- I" [4 W5 I
& I" H, ?& ]* G. X' c
                               
登录/注册后可看大图
- X1 j! o$ U0 H8 A$ x5 B
登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。
9 v8 K& ^: l$ s' g0 n" U4 S* ~由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。% T4 E7 N- e9 l2 J
主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。
3 a, y! b) X8 |总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
  W/ }" h4 l! @# Q& Q4 x3 j想听听大家的意见,你觉得这种方法可行吗?$ _6 Y. G5 u6 H5 R9 s
(完)
7 b" t" Y, j5 G# ~  e9 p/ A# A( C作者:阮一峰
2 F  c( e3 @* L6 x# _% |; T# `; H% ~) j日期:2012年10月3日
7 A3 L( s8 e* g! t来源:http://www.ruanyifeng.com/blog/% a: [" d( |6 k8 |" x% k
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025 年 4 月 20 日 15:28 , Processed in 0.098946 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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