Discuz!NT3.6與網站整合(操作用戶信息)解決方案


因為網站要加個論壇,所以就用到了Discuz!NT3.6。

可惜目前官方論壇已經關閉,只有3.6版本的有源碼,3.9的沒有源碼,不好操作,下載地址:

http://download.comsenz.com/DiscuzNT/3.6/

 

先說下我需要解決的場景是:

主站sosobt.com需要調用論壇BBS的用戶信息,而不是單獨再建立一套用戶信息,論壇的域名是bbs.sosobt.com,兩個不在主機的同一文件目錄下,所以需要解決跨域的問題,

特此記錄一下如何解決這方面的問題的。

 

下面是我的一個解決辦法,沒有采用第三方的SDK的方式。

1.將下載編譯好的論壇放在服務器上的論壇文件夾下,用bbs.域名訪問就可以了。

2.操作主站的ASP.net代碼,引入4個DLL到項目中,分別是:

using Discuz.Common;
using Discuz.Config;
using Discuz.Entity;
using Discuz.Forum;

需要拷貝對應的DLL到網站的BIN目錄下,然后添加引用;

 

3.操作獲取用戶信息的一些代碼:

            Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
            OnlineUserInfo oluserinfo = Discuz.Forum.OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
            userid = oluserinfo.Userid;
            if (userid == -1)
                Response.Redirect("http://bbs.h31bt.com/index.aspx");
            username = oluserinfo.Username;
            UserInfo us = Users.GetUserInfo(userid);
            userscore = Users.GetUserExtCredits(userid, 3);

從本地COOKIES里面讀取用戶 的資料信息,如果查找不到,userid返回-1,直接中轉到論壇讓用戶登錄。

 

4.更新用戶的積分信息,比較用戶編輯了一項內容,需要獎勵用戶一些積分什么的,需要操作積分信息:

UserInfo us = Users.GetUserInfo(userid);
float uss = Users.GetUserExtCredits(userid, 3);
Users.UpdateUserExtCredits(userid, 3, 1);//操作論壇的第三項積分,增加積分為1

通過UserInfo用戶信息類可以操作用戶的積分、等級等信息。

 

5.上面的代碼實現還需要設置一些內容才能夠保證跨域名的COOKIES的成功;

設置一下config\general.config 將 <CookieDomain/>改為<CookieDomain>domainname.XXX</CookieDomain> 

6.拷貝論壇下面的config文件夾,DNT.config文件到主站的目錄文件夾下;

 

7.由於下載源代碼使用VS2010編譯的成.net4.0框架的程序,導致管理后台如果有HTML語句的時候會報不安全,直接失敗,需要修改的地方:

論壇下面的web.config中強制requestValidationMode="2.0"

<httpRuntime requestValidationMode="2.0" maxRequestLength="2097151" executionTimeout="3600"/>

 

 

總結:

1.目前主站已經可以獲取到用戶積分信息,操作相關的用戶類,實現用戶登錄和注冊是沒有問題的;

2.由於3.9的原代碼沒有,所以里面的QQ整合登錄代碼沒有辦法使用,很是可惜;

遇到的問題:

1.由於服務器在美國,時差相差13個小時,發現用戶注冊后,主站獲取用戶信息總是不成功,返回一1,但過了13個小時后,此用戶信息的獲取就可以了。

需要分析源代碼是否存在時間差的問題;

 2.如果以后論壇架設到另外一台服務器上,需要考慮如何來調用的問題了,如果數據庫主站不能訪問的話,那就需要考慮其它方法了。

希望大家有此方面經驗的話,在此一起討論交流下,謝謝。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM