discuz 跨域整合的記錄文件
更新時(shí)間:2009年06月27日 21:32:59 作者:
最近我負(fù)責(zé)了從a.com,b.com,c.com同步可以登錄到bbs.comDISCUZ論壇。記錄下
\\create by ahuinan 2009-6-22
\\up by ahuian 2009-6-23
\\up by ahuinan 2009-6-24
1、將common項(xiàng)目中的md5函數(shù)代碼更改為:
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
實(shí)現(xiàn)主站與論壇統(tǒng)一加密方式。
2、將common項(xiàng)目中的Encode和Decode改成直接返回。
3、ASP若采用session,則之前先判斷是否有cookie。而主站的統(tǒng)一退出只需要添加一個(gè)清空cookie操作,代碼可以如下:
Response.Cookies("dnt")("userid") = rs("uid")
Response.Cookies("dnt")("password") = DESCode
Response.Cookies("dnt")("tpp") = rs("tpp")
Response.Cookies("dnt")("ppp") = rs("ppp")
Response.Cookies("dnt")("pmsound") = rs("pmsound")
Response.Cookies("dnt")("invisible") = rs("invisible")
Response.Cookies("dnt")("referer") = "index.aspx"
Response.Cookies("dnt")("sigstatus") = rs("sigstatus")
Response.Cookies("dnt")("expires") = 0
Response.Cookies("dnt").Domain = ".xxxx.com" //修改為你的域名,注意前面帶.(點(diǎn))
Response.Cookies("dnt").Secure = False
4、在dnt論壇中的aspx>>1文件夾下面先建立一個(gè)login_in.aspx處理所有的同步登陸請(qǐng)求。實(shí)現(xiàn)多域名下同步登陸,比如可以實(shí)現(xiàn)www.a.com和www.b.com 下的登錄問(wèn)題。
5、管理員部分由于修改了加解密部門,所以需要重寫(xiě)admin/index.aspx.cs文件,注釋掉:
//if (Context.Request.Cookies["dntadmin"] == null || Context.Request.Cookies["dntadmin"]["key"] == null ||ForumUtils.GetCookiePassword(Context.Request.Cookies["dntadmin"]["key"].ToString(), config.Passwordkey) != (oluserinfo.Password + secques + oluserinfo.Userid.ToString()))
更改為:
if (Context.Request.Cookies["dntadmin"] == null || Context.Request.Cookies["dntadmin"]["key"] == null)
同步登陸代碼文件有個(gè)文件名是index.aspx直接拷貝過(guò)去OK,拷貝到admin/index.aspx里面
6、以下內(nèi)容是為了修復(fù)IE6下COOKIE丟失的問(wèn)題,因?yàn)镮E6不支持P3P協(xié)議,可以再每個(gè)程序網(wǎng)站添加該協(xié)議,但比較麻煩,現(xiàn)在直接在IIS添加HTTP頭。
自定義HTTP頭名為:P3P
自定義HTTP頭值為:CP=CAO PSA OUR
7、可能用到的整合文件:
<%@ Page Language="C#" %>
<%@ Import Namespace="Discuz.Forum" %>
<%@ Import Namespace="Discuz.Common" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["userName"] != null && Request.QueryString["passWord"] != null)
{
string userName = Request.QueryString["userName"].ToString().Replace("'", "''");
string passWord = Request.QueryString["passWord"].ToString().Replace("'", "''");
int uid = Discuz.Forum.Users.CheckPassword(userName, passWord, false);
if (uid != -1)
{
LoginLogs.DeleteLoginLog(Discuz.Common.DNTRequest.GetIP());
UserCredits.UpdateUserCredits(uid);
ForumUtils.WriteUserCookie(uid, Discuz.Common.Utils.StrToInt(DNTRequest.GetString("expires"), 500),userName, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
Users.UpdateUserLastvisit(uid, Discuz.Common.DNTRequest.GetIP());
}
}
}
</script>
\\up by ahuian 2009-6-23
\\up by ahuinan 2009-6-24
1、將common項(xiàng)目中的md5函數(shù)代碼更改為:
復(fù)制代碼 代碼如下:
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
實(shí)現(xiàn)主站與論壇統(tǒng)一加密方式。
2、將common項(xiàng)目中的Encode和Decode改成直接返回。
3、ASP若采用session,則之前先判斷是否有cookie。而主站的統(tǒng)一退出只需要添加一個(gè)清空cookie操作,代碼可以如下:
復(fù)制代碼 代碼如下:
Response.Cookies("dnt")("userid") = rs("uid")
Response.Cookies("dnt")("password") = DESCode
Response.Cookies("dnt")("tpp") = rs("tpp")
Response.Cookies("dnt")("ppp") = rs("ppp")
Response.Cookies("dnt")("pmsound") = rs("pmsound")
Response.Cookies("dnt")("invisible") = rs("invisible")
Response.Cookies("dnt")("referer") = "index.aspx"
Response.Cookies("dnt")("sigstatus") = rs("sigstatus")
Response.Cookies("dnt")("expires") = 0
Response.Cookies("dnt").Domain = ".xxxx.com" //修改為你的域名,注意前面帶.(點(diǎn))
Response.Cookies("dnt").Secure = False
4、在dnt論壇中的aspx>>1文件夾下面先建立一個(gè)login_in.aspx處理所有的同步登陸請(qǐng)求。實(shí)現(xiàn)多域名下同步登陸,比如可以實(shí)現(xiàn)www.a.com和www.b.com 下的登錄問(wèn)題。
5、管理員部分由于修改了加解密部門,所以需要重寫(xiě)admin/index.aspx.cs文件,注釋掉:
復(fù)制代碼 代碼如下:
//if (Context.Request.Cookies["dntadmin"] == null || Context.Request.Cookies["dntadmin"]["key"] == null ||ForumUtils.GetCookiePassword(Context.Request.Cookies["dntadmin"]["key"].ToString(), config.Passwordkey) != (oluserinfo.Password + secques + oluserinfo.Userid.ToString()))
更改為:
復(fù)制代碼 代碼如下:
if (Context.Request.Cookies["dntadmin"] == null || Context.Request.Cookies["dntadmin"]["key"] == null)
同步登陸代碼文件有個(gè)文件名是index.aspx直接拷貝過(guò)去OK,拷貝到admin/index.aspx里面
6、以下內(nèi)容是為了修復(fù)IE6下COOKIE丟失的問(wèn)題,因?yàn)镮E6不支持P3P協(xié)議,可以再每個(gè)程序網(wǎng)站添加該協(xié)議,但比較麻煩,現(xiàn)在直接在IIS添加HTTP頭。
自定義HTTP頭名為:P3P
自定義HTTP頭值為:CP=CAO PSA OUR
7、可能用到的整合文件:
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" %>
<%@ Import Namespace="Discuz.Forum" %>
<%@ Import Namespace="Discuz.Common" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["userName"] != null && Request.QueryString["passWord"] != null)
{
string userName = Request.QueryString["userName"].ToString().Replace("'", "''");
string passWord = Request.QueryString["passWord"].ToString().Replace("'", "''");
int uid = Discuz.Forum.Users.CheckPassword(userName, passWord, false);
if (uid != -1)
{
LoginLogs.DeleteLoginLog(Discuz.Common.DNTRequest.GetIP());
UserCredits.UpdateUserCredits(uid);
ForumUtils.WriteUserCookie(uid, Discuz.Common.Utils.StrToInt(DNTRequest.GetString("expires"), 500),userName, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
Users.UpdateUserLastvisit(uid, Discuz.Common.DNTRequest.GetIP());
}
}
}
</script>
相關(guān)文章
.Net Web Api中利用FluentValidate進(jìn)行參數(shù)驗(yàn)證的方法
最近在做Web API,用到了流式驗(yàn)證,就簡(jiǎn)單的說(shuō)說(shuō)這個(gè)流式驗(yàn)證,下面這篇文章主要給大家介紹了關(guān)于.Net Web Api中利用FluentValidate進(jìn)行參數(shù)驗(yàn)證的相關(guān)資料,,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
Asp.Net MVC3.0如何項(xiàng)目部署到Win7 64位系統(tǒng)
這篇文章主要介紹了Asp.Net MVC3.0如何項(xiàng)目部署到Win7 64位系統(tǒng)的全部過(guò)程,需要的朋友可以參考下2015-10-10
asp.net 身份驗(yàn)證機(jī)制實(shí)例代碼
對(duì)于ASP.NET驗(yàn)證機(jī)制在項(xiàng)目開(kāi)發(fā)中運(yùn)用,會(huì)使項(xiàng)目非常方便快捷的實(shí)現(xiàn)頁(yè)面的訪問(wèn)權(quán)限問(wèn)題,而且省去了一些沒(méi)必要的安全問(wèn)題2012-06-06
詳解ASP.NET Core 在 JSON 文件中配置依賴注入
本篇文章主要介紹了詳解ASP.NET Core 在 JSON 文件中配置依賴注入 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
asp.net core webapi項(xiàng)目配置全局路由的方法示例
這篇文章主要介紹了asp.net core webapi項(xiàng)目配置全局路由的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
net操作access數(shù)據(jù)庫(kù)示例分享
這篇文章主要介紹了net操作access數(shù)據(jù)庫(kù)示例,需要的朋友可以參考下2014-03-03
ASP.NET MVC命名空間時(shí)引起錯(cuò)誤的解決方法
這篇文章主要介紹了解決ASP.NET MVC 重命名(命名空間)而導(dǎo)致錯(cuò)誤的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-11-11
Asp.Net Core對(duì)接釘釘群機(jī)器人的完整步驟記錄
這篇文章主要給大家介紹了關(guān)于Asp.Net Core對(duì)接釘釘群機(jī)器人的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03

