DiscuzNT 論壇與主站的同步登錄與退出
更新時(shí)間:2009年03月13日 00:16:09 作者:
首先我先說明一下,我參考了這篇文章:http://nt.discuz.net/showtopic-49836.html,在這篇文章啟發(fā)下簡單化。 我裝的是2.5Beta版
論壇域名是:forum.web.net(虛擬)
網(wǎng)站域名是:www.web.net(虛擬too)
先用管理員帳戶進(jìn)入論壇后臺(tái)在基本設(shè)置中,將“身份驗(yàn)證Cookie域:”設(shè)置為.web.net
論壇配置好后,復(fù)制bin文件夾的 Discuz.Forum.dll,Discuz.Entity.dll,Discuz.Data.dll,Discuz.Data.SqlServer.dll 和Discuz.Common.dll到網(wǎng)站的bin下。同樣,DNT.Config也放到網(wǎng)站根目錄
貼個(gè)代碼看,更清楚些。
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using Discuz.Forum;
using Discuz.Common;
using Discuz.Entity;
namespace WebSite
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//下面的判斷作用是:檢測cookie中是不是有論壇的userid,如果有就說明有用戶登錄
if (Request.Cookies["dnt"] != null && Request.Cookies["dnt"].Values["userid"] != null)
{
//從cookie中獲得UserID
int uid = Convert.ToInt32(Request.Cookies["dnt"].Values["userid"].ToString());
//得到這個(gè)用戶的全部信息
UserInfo a = Discuz.Forum.Users.GetUserInfo(uid);
//打印出來看看對不對。
Response.Write(a.Username);
//這句代碼是退出!清除Cookie?。。?
ForumUtils.ClearUserCookie();
}
else //沒有用戶?看我怎么登錄的!
{
//先設(shè)倆變量
string uname = "rohan";
string upass = "mypassword";
//驗(yàn)證用戶登錄 如果正確返回UserID,否則返回-1
int uid = Users.CheckPassword(uname, upass, true);
if (uid!=-1)
{
//下面都是官方整合說明文檔里的內(nèi)容了
LoginLogs.DeleteLoginLog(DNTRequest.GetIP());
//根據(jù)積分公式刷新用戶總積分
UserCredits.UpdateUserCredits(uid);
//寫入用戶登錄后的cookie
//××××××注意××××××這里有點(diǎn)特殊,原文是
//ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), config.Passwordkey, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
//這里我把config.Passwordkey直接從論壇config文件夾下的general.config文件的節(jié)點(diǎn)提取出來了。這樣就不用把論壇的相關(guān)文件拷貝到網(wǎng)站上了
ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), "R254842J4Z", DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
//更新該用戶最后訪問時(shí)間
Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());
}
}
}
}
}
網(wǎng)站域名是:www.web.net(虛擬too)
先用管理員帳戶進(jìn)入論壇后臺(tái)在基本設(shè)置中,將“身份驗(yàn)證Cookie域:”設(shè)置為.web.net
論壇配置好后,復(fù)制bin文件夾的 Discuz.Forum.dll,Discuz.Entity.dll,Discuz.Data.dll,Discuz.Data.SqlServer.dll 和Discuz.Common.dll到網(wǎng)站的bin下。同樣,DNT.Config也放到網(wǎng)站根目錄
貼個(gè)代碼看,更清楚些。
復(fù)制代碼 代碼如下:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using Discuz.Forum;
using Discuz.Common;
using Discuz.Entity;
namespace WebSite
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//下面的判斷作用是:檢測cookie中是不是有論壇的userid,如果有就說明有用戶登錄
if (Request.Cookies["dnt"] != null && Request.Cookies["dnt"].Values["userid"] != null)
{
//從cookie中獲得UserID
int uid = Convert.ToInt32(Request.Cookies["dnt"].Values["userid"].ToString());
//得到這個(gè)用戶的全部信息
UserInfo a = Discuz.Forum.Users.GetUserInfo(uid);
//打印出來看看對不對。
Response.Write(a.Username);
//這句代碼是退出!清除Cookie?。。?
ForumUtils.ClearUserCookie();
}
else //沒有用戶?看我怎么登錄的!
{
//先設(shè)倆變量
string uname = "rohan";
string upass = "mypassword";
//驗(yàn)證用戶登錄 如果正確返回UserID,否則返回-1
int uid = Users.CheckPassword(uname, upass, true);
if (uid!=-1)
{
//下面都是官方整合說明文檔里的內(nèi)容了
LoginLogs.DeleteLoginLog(DNTRequest.GetIP());
//根據(jù)積分公式刷新用戶總積分
UserCredits.UpdateUserCredits(uid);
//寫入用戶登錄后的cookie
//××××××注意××××××這里有點(diǎn)特殊,原文是
//ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), config.Passwordkey, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
//這里我把config.Passwordkey直接從論壇config文件夾下的general.config文件的節(jié)點(diǎn)提取出來了。這樣就不用把論壇的相關(guān)文件拷貝到網(wǎng)站上了
ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), "R254842J4Z", DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
//更新該用戶最后訪問時(shí)間
Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());
}
}
}
}
}
相關(guān)文章
在asp.net下實(shí)現(xiàn)Option條目中填充前導(dǎo)空格的方法
在asp.net下實(shí)現(xiàn)Option條目中填充前導(dǎo)空格的方法...2007-03-03將DataRow轉(zhuǎn)成指定類型的類,并返回這個(gè)類的對象(帶值)
由于實(shí)際需要 將DataRow轉(zhuǎn)成指定類型的類,并返回這個(gè)類的對象(帶值) ,實(shí)現(xiàn)方法看下面的代碼。2008-04-04代碼實(shí)現(xiàn)打印功能(asp.net+javascript)
頁面實(shí)現(xiàn)打印的效果代碼,分為服務(wù)器端和客戶端單個(gè)即可,客戶端的比較不錯(cuò),本站也是類似的方法。2009-05-05asp.net 上傳下載輸出二進(jìn)制流實(shí)現(xiàn)代碼
asp.net 上傳下載輸出二進(jìn)制流實(shí)現(xiàn)代碼,需要的朋友可以參考下。2009-12-12.Net站點(diǎn)設(shè)置多個(gè)路由對應(yīng)同一個(gè)Action
這篇文章介紹了.Net站點(diǎn)設(shè)置多個(gè)路由對應(yīng)同一個(gè)Action的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07