最近在一个小站中整合了Discuz论坛,查阅了些资料后实现了同步注册和单点登录。
Discuz是以虚拟目录的方式加载网站中,整合Discuz到网站中进行安装要注意一下几个问题:
下面说说怎样实现同步注册和单点登录
其实在研究后发现很简单,当然我现在做的只是同域的情况下,跨域的情况还没研究,估计也不会很难,应该只是多了一个设置cookieDomain的过程。Discuz给我们提供了一个DiscuzToolkit的工具包,提供了很多API供调用,下面就一步步来吧。
1 安装好Discuz论坛后,进入后台管理,选择扩展-》通行证设置-》添加整合程序设置
2 记下生成的APIKey和密匙,在后面的代码编写中会用到
3 我将APIKey,密匙都配置在了webconfig文件中
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);