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

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

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

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

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

×
大部分网站,都要求用户登录。) \* _% H) i/ G: ~5 p2 K  ?
常见的做法,是让用户注册一个账户。
5 R& B" ?0 Q& ]4 b8 P% u* P1 `& E4 [" P) a! u. \* @, k) j

( @+ h4 O& Y2 b# B# |  i                               
登录/注册后可看大图
) S4 {& N: H8 Z
这种做法并不让人满意。" y& m+ u+ y8 o2 M. ?3 R1 u
对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。# S6 H9 H- w$ f8 g7 y. X
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。1 U9 V" ~- l+ O( P
本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。' g* O0 s5 |) h, T+ f  X2 n
一、OpenID* ]. [) S2 H7 n% b$ [) p
OpenID是最早提出的一种无密码登录。( g" O5 m0 a  T+ G4 p! J5 H5 {

2 H/ {# j8 B9 h, y, q2 u) `2 t
/ g* i, o/ ^0 h$ V/ C
                               
登录/注册后可看大图
. O/ m% M2 Y3 q! N& P0 P3 Y: g
它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。- a7 U2 V9 k: e' Z; T9 c
所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。
2 _" z6 R8 ]6 h* P3 o+ ~0 u& Y- JOpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。6 [) o2 y: r+ Y
二、第三方账户( W6 Q6 X; c/ C' y4 |- e
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。" u! H" g% v2 z' S4 f: X4 S
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。+ m2 J+ p4 M" U
2 a% [: F- p: U

8 P, u) J% [7 V8 R. L4 W9 h+ _                               
登录/注册后可看大图
0 w# \/ k, i" H9 ?3 L
这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。4 w+ W9 J. o& D3 ^
三、Persona
; Z3 V; r$ p: T去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。) F4 w& t3 L# }4 p
2 Z3 i3 C- i: s/ ?5 C4 \# H5 l+ O

8 {7 ]4 H( G* F, `( A3 V                               
登录/注册后可看大图
7 I& Z1 s# V' S# c# g4 M' b
它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。3 d5 r3 v+ a1 @/ i
虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。, l1 V2 D. f9 L0 [: X. O6 J! K
四、OAuth
, r% d; p/ ?! I! k2 S3 w, L) B- oOAuth协议其实与第三方帐户是一回事。) e' u0 J# j/ G$ d' D
# Z# A- v- k& Y. V+ d: n4 Z

& B5 ~: e- I1 _- a* T4 S) A                               
登录/注册后可看大图
0 ?0 x! P/ {/ R
第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。
* [4 G" Q! W1 @- }# B* b. n. k4 z因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。
' ]" y6 _& R3 V五、Email一次性登录, P% e7 U! w" j) K- D8 e- @
上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。
8 k- j: p. T0 G! G& [他的做法很简单。用户登录的时候,只显示一个Email地址输入框。
4 D. W/ A) {+ _  w
" p7 u( @8 m% U

6 l5 o1 i) J6 e1 p                               
登录/注册后可看大图

" L0 B: ]7 ~' f' Z+ U8 q5 u1 P+ ~9 H用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。
8 b. _- Y% L0 y
. ]# o0 D: V1 N; |9 H9 c5 O

5 N: H+ x3 O/ F                               
登录/注册后可看大图
4 @4 D: ]/ y/ [# v( I7 Z
登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。* {' J6 R) n; g' a' S/ |- L" I
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。. A5 f: j' k7 T8 K
主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。
& q( ^5 B  s! d+ ?) ]+ ~总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
5 g! c- ^$ Z: \; a想听听大家的意见,你觉得这种方法可行吗?
4 u) [0 y) s  D5 j- D(完)
; w- ]# @; L$ f$ |. d% S作者:阮一峰/ w1 P9 v3 ]) l5 S) X  e; r
日期:2012年10月3日1 Z! ~. l$ \! m
来源:http://www.ruanyifeng.com/blog/" R( H6 o  y) l# n6 L$ w9 d
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025 年 2 月 25 日 23:44 , Processed in 0.018436 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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