java+discuz部署和通信问题总结

来源:互联网 发布:施温格 知乎 编辑:程序博客网 时间:2024/06/01 22:33

前言

公司最近一个项目(Java开发)需要增加论坛功能,本来花两个礼拜做的差不多了,积分+回复+缓存+后台管理做的都挺完善,就一个前台权限管理未添加进去,结果领导一说,不用自己开发的,导入第三方开源项目discuz(Php开发),无奈,浪费两个礼拜时间只能重新搞过。再吐槽下,二八定律真的要把握好,不然没用的事情搞一堆,又累又浪费时间,在老板眼里还觉得你怎样效率那么低,废话不多说了,现在来说下怎么把discuz整合到我们的Java项目里面来

Java+discuz整合

在这里参照http://www.cnblogs.com/puqiuxiaomao/p/4037092.html 博客搭建discuz,并和当前项目建立通信。
大致说下我对这两者关系和通信的一个理解:discuz这个项目其实是有两个大模块,一个是discuz论坛模块,另一个是UCenter用户中心,用户管理这块主要是由UCenter模块负责, 比如单点登录,注册,分组权限等等。。。discuz的配置文件在 ./config目录里。
搭起来后,你可能会发现,明明通信成功,但是怎么在单点登录还是没法实现,其实是这样的,虽然配置上已经配置OK,但是discuz的一个bug,相应的 ./uc_client/data/cache/apps.php这个文件没有修改成功,更改里面配置
这里写图片描述
更改成功后,重启下httpd服务,一般就可以了。
如果还是不行,那就调试下discuz目录下的./api/uc.php,看下相应的synlogin和synlogout方法是否有问题。
如果discuz的端口不是80,那需要更改./config/config_ucenter.php、discuz UCenter 应用管理页面和apps.php。
在这里需要注意一点是:如果是在Java项目发起注册的用户,并且第一次登录是在Java应用里登录,那你会发现,切换到discuz的时候,他也要你在discuz里再登录一次,这是因为你在Java应用里发起的注册请求,UCenter接受请求后只是在ucenter数据表里插入相应用户信息,而discuz模块的数据表里却没有相应数据,我的做法是在Java项目里做个多数据源处理,自己手动往discuz的数据库里注入数据,这样就没有这个问题了。

昵称插件使用

discuz 只有用户名,没有昵称字段,如果你想使用昵称,然后又不想买一些插件来使用,那你可以使用pre_common_member的username字段(登陆验证是用ucenter_members这张表做验证,因为没影响)。导入插件也很简单,网上搜一搜,还是蛮多插件可以使用,挺方便的。
原创粉丝点击