喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 15  1/2  1  2  > 
     
标题: [原创]再说passport  
 
halley (halley)
新手上路
Rank: 1
初级会员



UID 21850
精华 0
积分 7
帖子 5
金钱 7 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-7-21
状态 离线
[原创]再说passport

呵呵 我是好早在这注册的 但是很久没来了,看了一下上期获奖的 那篇关于passport的问题 想再说说我的解决方法

1。合并数据的步骤就不说了,自己看着办
2。注册的基本思路,使用webservice提供接口来注册和验证,具体实现和普通注册登陆一样
3。实现同步登陆
假设有3个discuz论坛,使用同一个passport,那么如何改造呢?
第一步。把discuz的登陆连接都连接到统一的passport登陆.
第二步。passport登陆页通过调用webservice验证登陆后重定向到一个给discuz专门增加的关键文件“passport_login.php”,重定向的同时带上一窜字符串 内容是由blowfish加密的比如username|timestamp,同时在passport所在域注册cookie
第三步。当discuz的passport_login.php得到这个字符串后解密 并判断一些要素比如那个时间变量是否在允许的范围内,如果是,就表示这个字符串有效,然后调用discuz的代码来写入cookie 写入log等

第四步,当用户访问其他discuz的时候怎么办呢?先header到passport所在域判断cookie,如果cookie存在就继续header到用户的referer地址,并带上上述子串,继而有discuz写入cookie,如果cookie不存在就如同游客一样访问
而来回header的过程用户是基本体验不到的,做到了透明话

细节问题:各个子站都可以是不同域名,而且blowfish的密钥也可以不同

[ 本帖最后由 halley 于 2006-8-12 03:32 PM 编辑 ]
2006-8-12 03:30 PM#1
查看资料  发短消息  顶部
 
xiaotao5 (xiaotao5)
论坛元老
Rank: 8Rank: 8
我要当老大


UID 20091
精华 0
积分 35579
帖子 390
金钱 35579 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2003-5-23
来自 浙江
状态 离线
[推荐阅读] xp与RH9的共存问题
说起来比较容易,为了这东西,烦着。
2006-8-12 03:44 PM#2
查看资料  访问主页  发短消息  顶部
 
fcicq
新手上路
Rank: 1
初级会员



UID 24467
精华 0
积分 21
帖子 587
金钱 20 喜悦币
威望 0
人脉 1
阅读权限 10
注册 2003-11-8
来自 fcicq.net
状态 离线
[推荐阅读] mysql_fetch_array错误
看来登录确实是个大问题.




2006-8-12 04:01 PM#3
查看资料  访问主页  Blog  发短消息  顶部
 
halley (halley)
新手上路
Rank: 1
初级会员



UID 21850
精华 0
积分 7
帖子 5
金钱 7 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-7-21
状态 离线
[推荐阅读] 新浪技术社区开张迎客


QUOTE:
原帖由 xiaotao5 于 2006-8-12 03:44 PM 发表
说起来比较容易,为了这东西,烦着。
这是我具体实现的过程 不是凭空说的
你可以到bbs.bitcomet.com实地测试

登陆后返回类似
http://bbs.bitcomet.com/passport ... .com%2Fregister.php

里面最关键的就是ciphe 而这个ciphe是有时效性的

自己想想没什么难度

[ 本帖最后由 halley 于 2006-8-12 04:15 PM 编辑 ]
2006-8-12 04:11 PM#4
查看资料  发短消息  顶部
 
菜鸟也要有理想
中级会员
Rank: 3Rank: 3
一般会员



UID 65342
精华 0
积分 439
帖子 426
金钱 439 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-8-1
状态 离线
[推荐阅读] 招聘PHP程序开发
如果要在N个站点写入COOKIE比较麻烦
俺还不知道什么解决方案比较好
我觉得用JS GET 数据到N个域名的 cookies.php然后写入
不知道这样效率好不好
2006-8-13 10:42 AM#5
查看资料  发短消息  顶部
 
菜鸟也要有理想
中级会员
Rank: 3Rank: 3
一般会员



UID 65342
精华 0
积分 439
帖子 426
金钱 439 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-8-1
状态 离线
[推荐阅读] 关于版本和版本号的控制,大家有什么好的方法吗
又想了一下
有个统一的mysql session表
这个表记录了N个域名是否已经登陆
登陆表示1中间用|分割 没登陆表示0
然后 判断是否对N个域名发送
还有好多细节要做啊
哈哈
2006-8-13 10:44 AM#6
查看资料  发短消息  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 求助!请高手指点迷津!
支持一下



五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-8-13 11:43 AM#7
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
halley (halley)
新手上路
Rank: 1
初级会员



UID 21850
精华 0
积分 7
帖子 5
金钱 7 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-7-21
状态 离线
[推荐阅读] 讨论:制作PHP+MySQL+DiscuzBBS网站,需要什么样的人


QUOTE:
原帖由 菜鸟也要有理想 于 2006-8-13 10:42 AM 发表
如果要在N个站点写入COOKIE比较麻烦
俺还不知道什么解决方案比较好
我觉得用JS GET 数据到N个域名的 cookies.php然后写入
不知道这样效率好不好
先不看效率 先看浏览器的安全设置,看来你是没有实地测试过 无论是用xml rpc get还是post到不同域名的cookie文件 都无法对当前浏览器进程设置cookie,所以用来回header是个不错的解决方法,iframe,之类的方法可以用在同域名下解决问题
有兴趣的可以试试img一个易域文件来设置cookie试试
2006-8-13 01:01 PM#8
查看资料  发短消息  顶部
 
菜鸟也要有理想
中级会员
Rank: 3Rank: 3
一般会员



UID 65342
精华 0
积分 439
帖子 426
金钱 439 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-8-1
状态 离线
[推荐阅读] js-获得text


QUOTE:
原帖由 halley 于 2006-8-13 01:01 PM 发表


先不看效率 先看浏览器的安全设置,看来你是没有实地测试过 无论是用xml rpc get还是post到不同域名的cookie文件 都无法对当前浏览器进程设置cookie,所以用来回header是个不错的解决方法,iframe,之类的方法 ...

我的确没去试过
我只是觉得header不太好
2006-8-13 02:47 PM#9
查看资料  发短消息  顶部
 
crazysoul
注册会员
Rank: 2
一般会员



UID 64747
精华 0
积分 72
帖子 94
金钱 72 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-6-15
状态 离线
[推荐阅读] 自动生成缩略图


QUOTE:
原帖由 菜鸟也要有理想 于 2006-8-13 02:47 PM 发表


我的确没去试过
我只是觉得header不太好
这不是好不好的问题.做WEB的SSO,不用HEADER实现不了可扩展的(主要是COOKIE的保存).(当然,如果只是两个站点,那就随便用URL+SESSSOID也没多大问题)
btw,discuz本身就提供SSO接口的实现
2006-8-14 11:22 AM#10
查看资料  发短消息  顶部
 15  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.026778 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP