Asp.Net站點整合Discuz論壇實現同步注冊和單點登錄


最近在一個小站中整合了Discuz論壇,查閱了些資料后實現了同步注冊和單點登錄。 Discuz是以虛擬目錄的方式加載網站中,整合Discuz到網站中進行安裝要注意一下幾個問題:

  • Discuz所在的目錄需要添加NETWORK SERVICE 和IIS_User這兩個賬戶的權限。
  • Discuz根目錄下的DNT.config文件需要修改,將<Forumpath>/</Forumpath>修改為<Forumpath>/BBS/</Forumpath>,BBS為虛擬目錄的名稱。
  • 由於我網站用了第三方的控件,在webconfig文件中進行了相關設置,然后在訪問論壇時提示缺少程序集的引用,后來把第三方控件的dll加到Discuz下的bin目錄中得以解決。

下面說說怎樣實現同步注冊和單點登錄 其實在研究后發現很簡單,當然我現在做的只是同域的情況下,跨域的情況還沒研究,估計也不會很難,應該只是多了一個設置cookieDomain的過程。Discuz給我們提供了一個DiscuzToolkit的工具包,提供了很多API供調用,下面就一步步來吧。 1 安裝好Discuz論壇后,進入后台管理,選擇擴展-》通行證設置-》添加整合程序設置

  • 應用程序名稱:可以隨便輸入
  • 應用程序Url地址:我填寫的是我站點的地址
  • 登錄完成后返回地址:同上

2 記下生成的APIKey和密匙,在后面的代碼編寫中會用到

3 我將APIKey,密匙都配置在了webconfig文件中

  • APIKey:value值為后台生成的APIKey
  • Secret:value值為后台生成的密匙
  • Url:value值為BBS的路徑

4 寫一個公共的BBSHelper類,將添加用戶,登錄,改密碼等方法封裝在里面。注意要引用命名空間Discuz.Toolkit

/// <summary>
/// 同步Discuz論壇幫助類
/// </summary>
public class DiscuzBBSHelper
{
    private string _apiKey = string.Empty;
    private string _secret = string.Empty;
    private string _url = string.Empty;
    DiscuzSession _ds;

    public DiscuzBBSHelper()
    {
        _apiKey = ConfigHelper.APIKey();
        _secret = ConfigHelper.Secret();
        _url = ConfigHelper.Url();
        _ds = new DiscuzSession(_apiKey, _secret, _url);
    }

    /// <summary>
    /// 登錄
    /// </summary>
    public void Login(string userName,string pwd)
    {
        int uid = _ds.GetUserID(userName);
        _ds.Login(uid, pwd, false, 100, "");
    }

    /// <summary>
    /// 登出
    /// </summary>
    public void Logout()
    {
        _ds.Logout("");
        _ds.session_info = null;
        HttpContext.Current.Session["AuthToken"] = null;
    }

    /// <summary>
    /// 創建用戶
    /// </summary>
    public void AddUser(string userName,string pwd)
    {
        _ds.Register(userName, pwd, "", false);
    }

    /// <summary>
    /// 修改密碼
    /// </summary>
    public void ChangePWD(string userName,string oldPWD,string newPWD)
    {
        int uid = _ds.GetUserID(userName);
        _ds.ChangeUserPassword(uid, oldPWD, newPWD, newPWD, "");
    }
}

5 在網站需要的地方調用該類中的方法即可,如下:

//同步論壇
DiscuzBBSHelper bbs = new DiscuzBBSHelper();
bbs.Login(username, pwd);


免責聲明!

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



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