网站与discuz的论坛进行整合,实现用户同步注册,单点登陆,同步删除用户,同步修改用户密码

首先介绍下我在安装中碰到的一些问题,discuz论坛是安装在网站子目录下,。
我这里是在独立主机下安装的,为bbs建立虚拟目录,没有新建应用程序池,给他建个应用程序池是另外一种情况
1.dnt.config一定要放在网站根目录
2.discuz的bin文件要复制到网站根目录的bin文件里面
3.如果网站根目录也存在web.config文件,这时候就要把discuz的web.config整合到网站根目录的web.config
里面去,这个花费了我很多时间。
web.config整合方法
在<httpModules>节点中增加
<add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
类似:
<httpModules>
        <add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
</httpModules>
把discuz NT的web.config节点 <system.webServer>复制到你网站根目录下的web.config里面去
OK,整合web.config搞定,就这么简单。
4.discuz 2.5config 目录不要放在网站根目录,会出错,网上都说要放在根目录,不知道是什么原因,我放在根
目录下就会出错,可能是2.5不用这么做吧。
5.另外在windows server 2003下安装还要注意权限问题,权限问题参考官方的安装文档
大家可以看官方的安装文档,一步步按照里面做,一般不会出现什么错误。
官方文档下载地址:官方文档
官方的Discuz!NT常见问题官方的Discuz!NT常见问题
安装已经说完了,希望能给大家帮助

如果有安装完成后仍然空白页面的话,请参照我的《安装好Discuz!NT论坛后首页是一片空白!解决办法http://blog.csdn.net/SL0007/archive/2010/04/10/5469199.aspx


跟discuz!nt论坛实现用户同步注册,单点登陆
用户登陆代码:
public static void Login(string username, string password)
        {
            try
            {
                Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
                int uid = Users.GetUserID(username);
                //论坛用户不存在就注册
                if (uid == -1 || !Users.Exists(uid))
                {
                    Regedit(username, password);
                    uid = Users.GetUserID(username);
                }
                //删除之前的错误登录信息
                LoginLogs.DeleteLoginLog(DNTRequest.GetIP());
                //根据积分公式刷新用户总积分
                UserCredits.UpdateUserCredits(uid);
                //写入用户登录后的cookie
                ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), config.Passwordkey, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
                //更新用户最后动作,如不需要可不执行
                //OnlineUsers.UpdateAction(olid, UserAction.Login.ActionID, 0, config.Onlinetimeout);
                //更新该用户最后访问时间
                Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());
            }
            catch
            {
            }
        }

代码文件下载:Integration.zip


http://nt.discuz.net/attachment.aspx?attachmentid=10782

 

 


这边这个问题很重要:
我的asp.net 程序到底读哪个web.config文件
a. 在IIS6的模型下,如果在站点myweb 下建立了 bbs虚拟目录,并且为bbs建立的应用程序池,那么bbs下运行的asp.net程序会读取bbs目录下的  web.config.如果此时 bbs目录下没有web.config文件,那么程序将检测站点根目录myweb是否存在web.config文件,如果存在则使用其配    置,如果不存在就报错啦。
b. 如果bbs不是虚拟目录,或者虽然是虚拟目录但是没有应用程序池,那么程序将读取网站根目录下的web.config文件。
我刚开始做用户整合是在网站根目录下,新建虚拟目录bbs,而且没有给bbs目录新建应用程序池。所以bbs采用的是网站根目录的web.config,这是因为子目录继承了根目录web.config。
所以,我就把bbs的web.config整合进根里面去
<httpModules>
  <add name="WebbHttpModule" type="Webb.WAVE.Controls.Upload.WebbHttpModule, Webb.WAVE.Controls.Upload"/>
  <add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
</httpModules>
这样是可以整合成功,但是论坛的附件上传功能就用不了啊,因为我加上的
<add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
跟我原来网站根目录的WebbHttpModule附件上传功能起冲突了
后来试用了下方法:
<location path="bbs" allowOverride="false">
  <system.web>
    <httpModules>
      <remove name="WebbHttpModule" />
    </httpModules>
    <httpHandlers>
      <remove verb="*" path="progress.ashx"/>
    </httpHandlers>
  </system.web>
</location>
但是这样不行,我不知道为什么不行。后来给BBS目录新建了个应用程序池bbs,这样bbs就采用自己的web.config,新建应用程序池的话,bbs就和网站是独立的,不需要把dnt.config,web.config放在根目录。
但是这样bbs的web.config还是会继承网站根目录的web.config,只要在bbs的web.config里面修改<httpModules>
<add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
<remove name="WebbHttpModule" />
</httpModules>
<httpHandlers>
<remove verb="*" path="progress.ashx"/>
</httpHandlers>
就OK了。

二:注册
Disucz!NT2.5论坛整合网站,在这过程中,遇到了很多问题。不过在努力下,还是一一解决。
下面是在整合注册中遇到的些问题:
一:会员类的初始化
官网提供的是UserInfo __userinfo = new UserInfo();
但是我的网站中也使用到了UserInfo这个类,为了能使用Disucz!NT论坛的,那就必须这样写了
Discuz.Entity.UserInfo __userinfo = new Discuz.Entity.UserInfo();
二:因为自己项目也有BasePage类,但又没法和Disucz!NT的整合到一起,为了代码中有几个必须使用到的参数,就把Disucz!NT中的复制到了网站注册页面中
/// <summary>
    /// 当前用户的用户组信息
    /// </summary>
    protected internal UserGroupInfo usergroupinfo;
    /// <summary>
    /// 当前用户的用户组ID
    /// </summary>
    protected internal int usergroupid;
    /// <summary>
    /// 当前用户的在线表ID
    /// </summary>
    protected internal int olid;
    /// <summary>
    /// 在线用户信息
    /// </summary>
    protected internal OnlineUserInfo oluserinfo;
    /// <summary>
    /// 当前页面名称
    /// </summary>
    public string pagename = DNTRequest.GetPageName();
在这里在写下关于配置信息,很重要
配置注意:
论坛在网站目录bbs文件夹下,此处论坛安装好就可。
把论坛目录下的DNT.config,bin文件下的dll文件,config文件夹,cache文件夹复制到网站根目录下。
修改DNT.config的配置,
<?xml version="1.0"?>
<BaseConfigInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Dbconnectstring>Data Source=ip地址;User ID=sa;Password=***;Initial Catalog=数据库名;Pooling=true</Dbconnectstring>
<Tableprefix>dnt_</Tableprefix>
<Forumpath>/bbs/</Forumpath>
<Dbtype>SqlServer</Dbtype>
<Founderuid>1</Founderuid>
</BaseConfigInfo>
config文件夹下的general.config文件,找到 <CookieDomain />修改为<CookieDomain />.zyue.com</CookieDomain> 很重要的。
注册具体代码下载Disucz!NT 2.0用户整合说明文档

 


最近做discuz整合时,碰到了discuz跟我的网站cookie不能跨域传输的问题。
本来cookie是有个domain属性,可以设置域名,但我那个B/S系统是在客户本地用的,没有用域名,只有IP,搞的我很郁闷。
本来加入你的网站是www.abc.com,bbs论坛是bbs.abc.com,你只要设置cookie.domain=.abc.com就可以实现跨
域传输了。cookie.domain不能为IP地址啊。郁闷。。。。
后来经同事提点,决定在discuz!NT下新增一个页面,用来进行跳转,只要把用户名,密码传输过去就可以了。在那边
做,就不用考虑cookie的域的问题。果然是有经验的和没经验的区别,要多学习啊。
在discuz!nt下新增页面也是有技巧的,要按照他里面的模板引擎来生成新页面,discuz模板引擎很好很强大啊。
终于在今天搞定这个问题了啊,感谢老天啊,人顿时轻松了很多,哈哈,又可以来写博客了啊。
页面传值几种方式,session,cookie,Viewstate,别忘了还可以通过URL参数来传值,这个是很重要的,可以实现跨
站传值,有空要研究下session,cookie的区别


http://www.cnblogs.com/lyh55/articles/1809229.html


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
论坛软件系统亦称电子公告板(BBS)系统,它伴随社区BBS的流行而成为互联网最重要的应用之一,也逐渐成为网站核心竞争力的标志性体现。2006年7月 CNNIC 发布的最新统计表明,43.2% 的中国网民经常使用论坛/BBS/讨论组,论坛社区应用首次超过即时通讯 IM ,成为仅次于收发Email的互联网基本应用。 Crossday Discuz! Board(以下简称 Discuz!,中国国家版权局著作权登记号 2006SR11895)是康盛创想(北京)科技有限公司(英文简称Comsenz)推出的一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。Discuz! 的基础架构采用世界上最流行的 web 编程组合 PHP+MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。 作为国内最大的社区软件及服务提供商,Comsenz旗下的 Discuz! 开发组具有丰富的 web 应用程序设计经验,尤其在论坛产品及相关领域,经过长期创新性开发,掌握了一整套从算法,数据结构到产品安全性方面的领先技术。使得 Discuz! 无论在稳定性,负载能力,安全保障等方面都居于国内外同类产品领先地位。 自2001年6月面世以来,Discuz!已拥有五年以上的应用历史和三十多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值