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

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

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

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

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

×
大部分网站,都要求用户登录。+ r" x+ [0 k! M- Y, {4 G* A8 I
常见的做法,是让用户注册一个账户。
8 L% k! K+ t  o5 s" o
2 l: n7 g6 y9 I9 i$ r$ p
" F! c3 m& V  V, a
                               
登录/注册后可看大图
; p$ r2 h  t" `- Z1 P) a: U
这种做法并不让人满意。
7 A& C+ B" Z& S  a4 N; J( X对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。
- V* ^" t4 M- O# L所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。. o7 Q" `1 [3 U2 `( q) f$ P
本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。& n( s( g7 X& }9 Q4 ^& a% A. o0 ]
一、OpenID
* x% `. L& E1 \# KOpenID是最早提出的一种无密码登录。% g! n" I0 X  J5 ]

. G& @0 B( y; T$ E
2 x( [* Q) N; w- a- T5 K
                               
登录/注册后可看大图
; z) k8 n% Z/ F; r! F
它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。6 Z% P$ a- U% z4 o
所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
3 ]% K6 K$ H4 k) W3 Q; E' S6 j! n9 UOpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。
$ H. Y- U7 G, b' s! B二、第三方账户
* L! R& A* X$ f  q8 p; ROpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。7 k9 ]' @5 j  \6 ]5 S/ D# ~
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。
, s  H% B9 m( H
5 f9 \8 l1 t3 ~( t' Y' E; M& ]& J
$ I% c6 s' O4 {9 z
                               
登录/注册后可看大图

9 o* G- c2 s! v) G$ j' w这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。
8 k1 I% A; h, |, X三、Persona
$ o0 j  A2 b, e7 ?# A) J; {去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
8 r4 ?4 Q/ N' u4 v3 |, c
9 b' e2 g! M' k( h

* w: c4 F, F  E/ n3 U- ^. p                               
登录/注册后可看大图

! q/ G  T4 Q# ~) J3 t3 c) j) e它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
4 S7 k: }+ `7 `5 k) M) D' o虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。
2 {$ N: k( k+ S" ?  v四、OAuth+ Q% i6 o; m- ^' s0 e& V
OAuth协议其实与第三方帐户是一回事。
& a5 \) e% X5 B2 j% W1 P# Z; T2 \& Q* W: y

- P1 o& }$ U0 i# z2 r                               
登录/注册后可看大图
3 [5 f+ A7 h3 }. O; r3 u
第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。% L" O- Z3 b, q: J8 B/ O
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。% p7 l0 V; s- p( Z
五、Email一次性登录: P. J. b* O7 K* Q: v5 Y
上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。
' n) t6 x1 ?) L) j3 x  ?+ ^他的做法很简单。用户登录的时候,只显示一个Email地址输入框。7 n8 n3 P  F4 W

  h$ G, t  k3 X$ c; h* V4 Q
- E2 T# s; k- x3 s  j4 [( F
                               
登录/注册后可看大图

+ o- H* x% s. t8 u: @- T3 P用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。- D2 H$ h6 D* f) Q( g! Q$ q
1 x# G+ h# [! Q
3 O3 \! G4 _+ C% V
                               
登录/注册后可看大图
$ _! }& @( P* T2 O: B/ J. R
登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。
- P5 a% k4 D% Q0 G由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。  N6 Z( s; x9 y: {) B/ r6 ^
主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。
3 V4 j8 z' s  U. M4 i. N( l总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
9 I3 s$ t5 F  b0 D  c想听听大家的意见,你觉得这种方法可行吗?
- @4 ]0 Z7 c9 M( i: P# s(完)6 r5 u( v7 b) P6 }% I- B
作者:阮一峰
  D$ m0 U3 ]8 L* O$ G. R日期:2012年10月3日
  J+ d, x% L! D& Y5 @( W来源:http://www.ruanyifeng.com/blog/
6 d; R" l+ [4 U  i
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025 年 2 月 7 日 10:42 , Processed in 0.088138 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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