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

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

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

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

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

×
大部分网站,都要求用户登录。5 G3 W$ x' v+ e0 E
常见的做法,是让用户注册一个账户。
7 z- B- I0 ?7 ]8 G7 m& `
1 W, t/ Z1 R9 N" V8 t6 Z! Y

: n" q  Y5 B! H; m; d) B, a                               
登录/注册后可看大图
, e3 |8 [2 G& x5 B) Q9 ]4 M, r
这种做法并不让人满意。, B1 j8 X' Z  t; C" O
对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。
; y8 n! j3 B' ?4 @5 c4 G所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。
) \; W8 G6 ?& K5 Q- C本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
: |4 J1 O" ^( V- y/ G: K) q! X9 ^一、OpenID
& }; C/ ]/ C1 Y. aOpenID是最早提出的一种无密码登录。) ]$ C- l: d! t

1 r0 {* A* k% a# y% l

' Z. {2 E( k4 w' c7 X                               
登录/注册后可看大图
. _7 M2 Z; }6 S% _( V8 n
它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。5 C/ i! b8 E. h( D
所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。/ K: z' g6 C, q5 E$ A, j
OpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。8 X! {+ q0 o( n$ a7 M) |+ m, y; F8 g8 d
二、第三方账户
9 u) H- D2 u. {) @! VOpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。
* q+ g+ ]( @9 V. [* _因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。: `  M/ \9 U0 P1 V% Y; l
/ p  _* c$ ^0 F3 a9 D9 M" }  [

9 p0 T- w8 |) M/ o. ^) }                               
登录/注册后可看大图
! k; ?# ]: f( Z* i7 g
这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。" ~1 z; s: i- t# Y  L  N  R+ T0 y
三、Persona, v* A- z8 m9 N& C+ B2 q4 s  q
去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。1 [' j0 P! I( p7 h+ e

- l$ H; _- w' E; r3 X( s# `
; q% N" i: [; `/ B! \' q
                               
登录/注册后可看大图

5 W; q  B: O- W# L. |& v它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。4 ?! Z1 e! w  O8 U5 l8 p
虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。( v2 ?5 a  h' n. P
四、OAuth1 x! G5 t; r3 X% |8 r
OAuth协议其实与第三方帐户是一回事。
- |* B5 R% I; A$ N& a% ]5 i9 `1 c9 m
* C( K6 |. |! h4 U' ?2 s
                               
登录/注册后可看大图

3 M' o5 \; K- ?2 @' c$ I第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。' ~* m- _! i3 f- O3 \0 K
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。6 x. ~' E0 @) u. I" V3 }
五、Email一次性登录
4 a# w. h# v5 k6 N! T- R/ ]上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。; t, i( q" t" d& H  r! w( K
他的做法很简单。用户登录的时候,只显示一个Email地址输入框。. H* H' y5 Q/ j7 H
% J1 N1 z; f" Q0 u
, s/ o5 s) D! F1 B( B
                               
登录/注册后可看大图
4 M" G& e- Q8 D$ _. `
用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。
& ?  l) M" D. K- e( i- U
& q' a! y+ j0 b/ f

: O% U7 q% A2 i9 M' t  y                               
登录/注册后可看大图
) E; f$ }8 R8 }9 k
登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。6 T$ S4 V9 b8 B* N* j; }. i
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。
6 V/ L1 C/ a4 {; B0 G& z主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。0 i: `/ x% V! Q5 o4 ~
总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。, U1 y+ a" D" D
想听听大家的意见,你觉得这种方法可行吗?) b8 a0 ^7 q3 O; q" [* @- `& S6 ]
(完)
( t3 @# o) y+ \$ C作者:阮一峰1 ?* s& }* K* [% F+ A
日期:2012年10月3日
( f) J( w3 y* B) W# X) z来源:http://www.ruanyifeng.com/blog/
# A+ Z5 }6 Y/ j- [  A
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024 年 11 月 17 日 18:29 , Processed in 0.113486 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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