找回密码
 注册
美国原生IP服务器推荐-Yv.gs
【阿里云】2核2G云新老同享 99元/年,续费同价做网站就用糖果主机-sugarhosts.comJtti.com-新加坡服务器,美国服务器,香港服务器
查看: 50|回复: 0

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

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

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

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

×
大部分网站,都要求用户登录。% {' P, b: i: W0 n: V( c; T
常见的做法,是让用户注册一个账户。
5 q) T* C, I3 D- j- q1 B. @) O  q) d( I/ N. ~. }
- ?  k3 C: H/ q4 m7 I
                               
登录/注册后可看大图

5 W: ~9 x5 T/ `2 A3 ~2 H这种做法并不让人满意。
8 O& O6 r* y# F$ Y. w对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打击。2 W& y7 n7 Z. x5 n0 W: Y8 F
所以,很早以前,人们就开始设想无密码登录(password-lesslogin)。这对用户和网站,都将是极大的减负。
4 ^8 A" K4 T& P* Z9 o" q本文先回顾无密码登录的几种常见做法,然后探讨一种最简单的实现。
$ [2 |1 L  M( U7 l6 Y8 W一、OpenID
  l5 x9 B$ g8 W$ C4 k6 v! ROpenID是最早提出的一种无密码登录。8 V  x9 t$ D# n. e
' P8 k/ K3 C2 m/ J+ H- I

( i# L/ q' `( g/ n' J: {                               
登录/注册后可看大图
# r0 M( p, {0 B& Q
它的设想是这样的:互联网上每一个网址(URL),都指向一个独一无二的网页,这说明网址具有唯一性。因此,可以用网址来标识用户。' t1 O: f4 Z9 r5 G  }& @
所以,使用OpenID的网站,不要求用户输入用户名,而要求用户输入一个代表其身份的网址。然后,向该网址进行求证,如果得到证实,就允许用户登录,从而实现无密码登录。) B6 v- {' \+ V7 ^  B( B6 \3 h$ c
OpenID有两个很大的缺点:一是需要服务器端支持,二是使用网址表示身份,违背直觉,普通用户难以理解。因此,始终无法得到推广。  \4 `4 R) A$ D8 L4 _9 G9 {$ T' r
二、第三方账户  a6 n, V* {. u4 b' c8 R
OpenID的实质,是让第三方网站认证用户身份。那么很显然,这等同于用户在第三方网站登录。+ b" O' v- v: K9 s
因此,可以直接告诉用户,使用第三方帐号登录(前提是对方支持OpenID)。/ ]7 f3 k0 U1 h- g

' J" K  ^" J6 Y4 a
5 J' ]$ U) D) q- P. V
                               
登录/注册后可看大图

5 z* V/ u$ j. `6 _0 _这样做的优点是比较直观,用户容易接受;缺点是自身的业务,从此多多少少要依赖第三方网站。比如,现在很多网站使用Facebook帐号登录,一旦Facebook出现故障,这些网站都会受到影响。
# U; N3 @7 Q# V7 S三、Persona
% M- N4 `/ c4 C8 o" I去年,Mozilla提出了Persona方案,号称是无密码登录的终极解决方案。
/ e/ I3 s- C) a8 g9 A3 n
4 b2 K6 v. b, Y* z
2 B! z& ?6 D1 \$ j  L% c# K' N
                               
登录/注册后可看大图
; B$ f) X( ?; y
它与OpenID异曲同工。后者用网址标识用户,它用Email标识用户。用户键入Email地址以后,网站向Email服务器请求认证。
* h+ ^+ C3 B+ u+ N. ~: U6 e- B$ {虽然这种方案还处在推广期,效果有待观察。但是,我目前不太看好它。一则,它的技术要求和流程,比OpenID更复杂,无法用一句话讲清楚;二则,它要求服务器端支持,很难想象世界上大部分Email服务器都会部署Persona代码。8 m2 y/ A/ `% w# v( O
四、OAuth
! A/ @7 v* [( L+ pOAuth协议其实与第三方帐户是一回事。! H+ s4 u2 h6 ~! `) ?" t+ P

0 E' W2 G8 H/ |4 W0 i# l
3 }5 Z! Z9 g4 W/ C6 @+ |
                               
登录/注册后可看大图

. P  w& M  b% J2 A1 B) {7 G第三方账户是第三方网站提供用户身份认证,属于认证服务(authentication);OAuth则是更进一步,第三方网站允许你直接操作它的用户数据,属于授权服务(authorization)。* ]: G, L8 X3 ?" E! f5 r7 Y
因为涉及到用户数据的改变,所以OAuth认证比Openid认证要求更严格。通常,只有针对某个第三方网站的外部服务,才需要用到OAuth;如果只是单纯地区分用户身份,其实没必要用它。& ]& Z$ D! C3 x- E
五、Email一次性登录8 o5 g6 e9 R6 u8 |. w2 g% O6 g  ~
上面四种登录方法,是目前主流的无密码登录。下面,我想介绍一种最简单的实现,它是美国程序员BenBrown在今年7月份提出来的。
2 S0 n  \; u& f; {' h- O$ k他的做法很简单。用户登录的时候,只显示一个Email地址输入框。
$ F: z) p7 F1 H; j- T* e, n. T: E+ X( V4 H1 N

( N5 S1 F9 P! ~" ]5 c, k! [                               
登录/注册后可看大图
$ i8 s6 t* i( n4 L
用户输入Email地址以后,网站就向该地址发出一封邮件,里面包含了一个登录链接。用户点击这个链接,就证明他/她确实是这个邮箱的主人,身份有效,从而实现登录。
2 z) k. X- o+ w, h. z( p# C6 n# V' r3 g) Z
; m$ H6 ~2 Z4 G* B" ?9 i# B* j3 o2 x
                               
登录/注册后可看大图

+ T" H% I) p7 R6 N( C登录链接只在一段时间内有效,但是可以通过cookie,让用户长时间处在登录状态。如果cookie失效,则重新向用户邮箱发出另一个登录链接即可。- v1 U4 H1 A8 u% V
由于整个认证过程,都通过电子邮件完成,彻底实现无密码登录,而且操作流程很自然,易于理解。更重要的是,它使用现有的Email协议,不需要服务器端部署新的代码,具有最好的兼容性。9 u" t" X: A! _2 h
主要缺点是,它需要用户额外查看一次邮箱,稍显麻烦;它也不适合那种用户无法打开Email的场合,比如在朋友家中上网。因此,使用它的网站,还必须部署备用的登录方式。
$ b6 f3 }1 h) A* K% g- S总的来说,我觉得这是一个简单易行的好方法,以后做网站的时候,打算尝试一下。
: [* g6 z6 |' Y% ?想听听大家的意见,你觉得这种方法可行吗?! }7 q! N& s3 H7 \
(完)" h; T/ @6 C% }( i
作者:阮一峰
; b+ p* f/ f: d# p8 i9 |6 o日期:2012年10月3日' E9 G8 D0 P/ }/ s
来源:http://www.ruanyifeng.com/blog/
2 Y4 x  F- k0 S/ c1 `$ k1 [' F
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

美国原生IP服务器推荐|Archiver|手机版|小黑屋|金光论坛

GMT+8, 2025 年 1 月 21 日 12:06 , Processed in 0.018215 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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