程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> discuz 跨域整合的記錄文件

discuz 跨域整合的記錄文件

編輯:ASP.NET基礎
\\create by ahuinan 2009-6-22
\\up by ahuian 2009-6-23
\\up by ahuinan 2009-6-24

1、將common項目中的md5函數代碼更改為:
復制代碼 代碼如下:
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);

實現主站與論壇統一加密方式。

2、將common項目中的Encode和Decode改成直接返回。

3、ASP若采用session,則之前先判斷是否有cookie。而主站的統一退出只需要添加一個清空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" //修改為你的域名,注意前面帶.(點)
Response.Cookies("dnt").Secure = False

4、在dnt論壇中的aspx>>1文件夾下面先建立一個login_in.aspx處理所有的同步登陸請求。實現多域名下同步登陸,比如可以實現www.a.com和www.b.com 下的登錄問題。

5、管理員部分由於修改了加解密部門,所以需要重寫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)

同步登陸代碼文件有個文件名是index.aspx直接拷貝過去OK,拷貝到admin/index.aspx裡面

6、以下內容是為了修復IE6下COOKIE丟失的問題,因為IE6不支持P3P協議,可以再每個程序網站添加該協議,但比較麻煩,現在直接在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>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved