Rails 如何在 rails 上整合 discuz!?

alex_cheng · 2013年04月25日 · 最后由 raven 回复于 2013年06月17日 · 6700 次阅读

本人用 rails 做了一个 web 应用,需要加个论坛,自然地就采用了 discuz!。但是我希望用户在 rails 上登录后,可以直接进入 discuz!。我的 rails 上的用户信息在 discuz! 中也能够看到,总之希望将两者整合在一起,共享用户注册信息。

写 rails 的为什么会有看得上 discuz 的……我觉得这很不自然

但我需要个论坛,目前最成熟的不就是 discuz! 吗?

其实就是登录系统整合吧?可以做一个 登录系统,两天一起调用,类似于 OAuth? 或者在数据库层面整合?

discuz 有 ucenter 系统,专门用来整合其他程序的,不过研究透 ucunter 的功夫可以用 rails 搭建个不错的论坛了

我没有找到 rails 实现的成熟论坛。Discourse 不错,但是无法支持 IE6/7/8/9,但国内 IE6/7/8/9 还是不少的

#6 楼 @Alex_Cheng 支持 ie 系列不难吧?你这个需求用 OSS 来实现就可以。

楼主可以研究一下 Discuz 的 cookies 机制,在 Rails 登录后,写下可以给 Discuz 用的 Cookie,然后用户表与 Discuz 共用。

不一定可行,仅供参考……

  • 可以考虑传递 cookie
  • 可以考虑共用 session
  • 可以考虑做个验证接口,discuz 里弄个钩子啥的,内网服务器访问。

discuz 自己是 ucenter 的 一个 app 你可以把你的其他应用都集成到 ucenter 里

不过 rails 搭 php 这纯粹是 找难受嘛

真不知道 Discuz 有啥好的 界面都审美疲劳了 我现在看见 Discuz 论坛就不进去了

#9 楼 @_samqiu #10 楼 @vincenttone

浏览器安全限制了 cookies 只能在主域名和子域名之间共享,虽然可以通过 iFrame 等方法去开另外一个网站的登陆页面注册并回调,但是直接跨站提交可行么?How?

#13 楼 @lgn21st 搜一下 ruby-cas weibo 也是类似的方法吧。t.sina.com.cn 和 weibo.com

#13 楼 @lgn21st 作者的意思就是同一个域名吧,貌似……

#14 楼 @xmonkeycn weibo 应该是直接跳转了吧

#14 楼 @xmonkeycn 你说的这个是走 OAuth 流程的,通常有两种方法,一种是网站后台 server 用你的用户名密码去目标网站完成登陆,拿到 token,或者你在前台登陆目标网站,然后通过 callback 把 token 返回给后台存储,但是这两种方式都不是通过 cookie 跨站使用的。

浏览器的安全限制,cookie 本就不能跨站使用,所以我好奇上面诸位推荐共享 cookie,到底你们是怎么做到的?

#17 楼 @lgn21st 我搜了一下,还真是有不同域使用同一个 cookie 的方法。 话说共享 cookie 应该可以实现,因为我在做的某个应用就可以共享,具体方法不好说,我也没细致的去了解。

#18 楼 @vincenttone 如果真的可以,互联网世界不是要乱了?

#19 楼 @lgn21st 我目前见到的都是二级域名使用主域名的 cookie 进行验证,感觉就好像是把本地的 cookie 传输给了主服务器,主服务器验证通过,接口返回数据……

#13 楼 @lgn21st 我的意思就是用同一个主域名

#17 楼 @lgn21st 以前折腾过 p3p 跨域 cookie,现在不知道有没有更好的方法,不过 discuz 没有官方接口用来做集成?

#1 楼 @blacktulip 有些自负了,在开发语言层面比较软件系统是不是......

discuz 适合懂运营不懂技术的,只会 FTP 上传。别小看,这种不懂技术的运营能人很多。如果自己懂技术,想用 discuz 论坛然后自己二次开发定制,跟别的系统结合,那是个深渊。

如果要这么用的话,建议以 Discuz 为主,尽量把功能放在那边,包括登录啥的,然后认证的同步就使用 cas 或者 openid

可以尝试单点登录或 openid。

看官方有没有提供 ucenter 的 client rails 版,没有只能自己搞定,主要是实现通信接口采用相同的加密算法,sso 的登入登出是采用 js p3p 头

这样组合,使用两套运行环境,增加运维调试难度。

有这时间和精力不如自己这个小巧精炼的论坛,一劳永逸!

Rails 社区开源的论坛有现成的,discourse 啊。https://github.com/discourse/discourse

用 rails 的开源论坛是最好的选择。有不少的选择。 如果必须用 discuz,有 2 个思路供参考: 1、用 ucenter。没有官方的 rails client,需要自己实现。 参考:http://cnqhoo.iteye.com/blog/406005 http://www.iteye.com/topic/895086 2、使用 rubycas。在 discuz 中做个 cas client. 参考: http://rubycas.github.io/ https://wiki.jasig.org/display/CASC/phpCAS

#7 楼 @raven 请问 oss 是什么?不好意思,本人才疏学浅。

#32 楼 @Alex_Cheng 就是多个服务一次登录。例如你 GMAIL 登录了 那 GOOGLE DOC YOUTUBE 什么的就都跟着登录了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号