Discuz 整合到其它系统记录

来源:互联网 发布:c语言预处理指令 大全 编辑:程序博客网 时间:2024/05/16 03:27

整了论坛跟主站集成,需要实现用户的统一管理,注册,登录等要在主站进行,下面是一些记录的流水账。

Discuz的版本是3.2

Discuz 设置cookies域名共享

在dz要设置 cookie的域为 .xx.com 配置文件的位置 config/config_global
主站点写入cookie的时候也要 指定domain .xx.com

Discuz 用户密码存储逻辑

dz用户表 dz_uc_members 存了密码和salt,它是UCenter中的用户数据表,登录时候根据这个对比 主要是负责登陆
用户主表 pre_common_member也存了密码,加密规则 md5(password) (这个密码没啥用) 这表主要是负责记录用户在论坛里的发帖,积分,等行为的记录

UCenter的密码加密规则 源码文件 uc_client/model/user.php

md5(md5($password).$user['salt'])

伪代码 md5(md5(password)+salt)

登录和注册逻辑的说明文章

  • http://bbs.zb7.com/thread-545049-1-1.html
  • https://www.liudon.org/737.html
  • 表结构的文档 http://doc.ipple.net/discuz/#common

登录注册等功能的集成

A站是主网站 www.xxx.com ,B站是dz bbs.xxx.com
主要是登录和注册逻辑,退出逻辑跟登录有类似地方,用户密码更新逻辑跟注册有类似地方。

第一种思路

模拟登录,共享cookies,数据库插入用户

登录逻辑:不管用户当前浏览器在A站还是B站, 点击登陆之后都会跳转到A站的登录页面,这个时候浏览器在A站的登录页面提交登录表单,A站的服务端首先检查用户是否合法,如果合法的话,A站的server会模拟发送一个登录请求(httpclient)到B站服务端(这里我们是买了个插件,提供的这个端口,质量也挺。。dz单点登录插件),在B端登录之后,把获取到的cookie写入 .xxx.com 这个domain,之后才会发送响应给浏览器,接着就是302跳转到B站的页面上,此时会显示已经登录。

注册逻辑: 可以直接操作数据库,要折腾源码,要插入的表不少。用户在主站注册之后,直接把信息写入到dz论坛的数据库中。

下面是注册时要插入用户信息的表,前缀可能不同哈

pre_common_memberpre_common_member_countpre_common_member_field_forumpre_common_member_field_homepre_common_member_profilepre_common_member_statuspre_ucenter_memberspre_ucenter_memberfields

第二种思路 用UCenter

其事UCenter已经提供了注册,登录,退出等的api,这里有一个java版本的文章 java整合dz同步注册登录等,比较重要一点就是dz用户自动激活,这个需要修改dz的源码 整合 ucenter 注册自动激活。
利用js和ucenter的接口共同合作完成dz登录的模拟。

第三种思路 SSO

正常的sso,要修改源码,要求更高了,用户写入,登录逻辑都要相应的修改。

禁用注册 登录 修改密码

==怎样禁用dz的注册,让注册地址跳转到主站的注册页面?==

这篇文章��️讲解: http://www.aichengxu.com/view/2549321
也可以用 openresty rewrite 重定向注册url
⚠️:修改源码要先备份

==怎么阻止dz的登录,引导用户去主站登录?==

登录有页面登录也有ajax登录,所以直接修改登录部分的模版

笔者找到的登录入口1. 右上角登录按钮2. 发帖子的时候登录按钮3. 登录某些需要权限的url,会在页面显示登录框这几种情况都会引用同一个模版,模版所在的文件夹 data/template/ ,找找login关键字的文件类似member_login⚠️:修改源码要先备份

==怎么禁用dz修改密码的功能?==

看到很多人抱怨啊,怎么不提供一个api呢,还是该源码把,直接把这个页面改掉算了。

代码位置 template/default/home/spacecp_profile.htm
有个案例:http://www.discuz.net/thread-2075444-1-1.html

只是修改了模版,http接口其实还是存在的。
⚠️:修改源码要先备份

其它问题

除去标题tiitle中的 Powered by Discuz! 字样

每次在搜索引擎搜索自己的论坛的时候,标题上总是有 Powered by Discuz! 这几个词,不太美观,怎么去掉他们呢?
编辑 template/default/common/header_common.htm 这个文件,找到html的title的部分,删除掉就行了。 如果使用的不是默认主题, 请到对应主题下寻找这个 header_common 的模版。

0 0