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

由於網站要加個論壇,因此就用到了Discuz!NT3.6。web

惋惜目前官方論壇已經關閉,只有3.6版本的有源碼,3.9的沒有源碼,很差操做,下載地址:數據庫

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

 

先說下我須要解決的場景是:安全

主站sosobt.com須要調用論壇BBS的用戶信息,而不是單獨再創建一套用戶信息,論壇的域名是bbs.sosobt.com,兩個不在主機的同一文件目錄下,因此須要解決跨域的問題,服務器

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

 

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

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

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

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

須要拷貝對應的DLL到網站的BIN目錄下,而後添加引用;.net

 

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.若是之後論壇架設到另一臺服務器上,須要考慮如何來調用的問題了,若是數據庫主站不能訪問的話,那就須要考慮其它方法了。

但願你們有此方面經驗的話,在此一塊兒討論交流下,謝謝。

相關文章
相關標籤/搜索