ASP.NET系统整合DiscuzNT3.6之注意事项
2012-10-04 22:26
483 查看
最近在做一个ASP.NET的系统,需要与Discuz整合实现双向登录、注册、修改密码这些简单的集成。
查了一些资料,最后还是选择了官方提供的DiscuzToolkit,由于是开源的,所以用起来也方便,可以根据自己的需求做一些调整,在此也感谢DZ团队。
第一步,当然还是将论坛安装好,调试好,一切正常。
第二步,学习官方提供API文档,http://nt.discuz.net/showtopic-66493.aspx。
第三步,查看官方提供的示例文档,http://nt.discuz.net/showtopic-81187.aspx。
第四步,项目中引入Discuz.Toolkit.dll(可直接将开源的项目添加到项目中)在网站中增加同步登录或注册BBS帐号的方法,登录后或注册完成时,如下:
View Code
以上check_sig()方法里,主要就是验证sig是否正确,这个值是通过参数排序后md5出来的,具体过程可以参考方法:Discuz.Forum.Sync.GetUrl()。
DiscuzToolkit线程同步,相信这两个问题肯定会碰到:
(1)在注册用户时,碰到以下异常:当前会话所提交的call_id没有大于前一次的call_id
(2)注册用户时,碰到以下异常:An item with the same key has already been added.
解决办法:/article/4793443.html
解决方案中,有一处线程锁的问题:
lock (_syncRoot) 可直接用 lock (this)
查了一些资料,最后还是选择了官方提供的DiscuzToolkit,由于是开源的,所以用起来也方便,可以根据自己的需求做一些调整,在此也感谢DZ团队。
第一步,当然还是将论坛安装好,调试好,一切正常。
第二步,学习官方提供API文档,http://nt.discuz.net/showtopic-66493.aspx。
第三步,查看官方提供的示例文档,http://nt.discuz.net/showtopic-81187.aspx。
第四步,项目中引入Discuz.Toolkit.dll(可直接将开源的项目添加到项目中)在网站中增加同步登录或注册BBS帐号的方法,登录后或注册完成时,如下:
View Code
private DiscuzSession ds; private string action = "", user_name, password; private int uid = 0; protected void Page_Load(object sender, EventArgs e) { try { ds = DiscuzSessionHelper.GetSession(); if (!IsPostBack) { action = Handler.RequestQueryString("action"); uid = Handler.RequestQueryInt("uid"); user_name = Handler.RequestQueryString("user_name"); password = Handler.RequestQueryString("password"); if (action != "" && check_sig()) //验证sig是否合法 { switch (action) { case "login": //同步登录:uid,user_name,time,action 正序后 + secret(密钥) Md5后 算出sig Login(); break; case "logout": //同步退出 LoginOut(); break; case "updatepwd": //同步修改密码 break; } } } } catch (Exception ex) { LogHelper.WriteLog(ex); } } /// <summary> /// 登录 /// </summary> private void Login() { Discuz.Toolkit.User user= ds.GetUserInfo(uid); if (user != null) MemberOp.ValidateLogin(user.UserName, user.Password, true); } /// <summary> /// 退出 /// </summary> private void LoginOut() { MemberOp.LoginOut(false); }
以上check_sig()方法里,主要就是验证sig是否正确,这个值是通过参数排序后md5出来的,具体过程可以参考方法:Discuz.Forum.Sync.GetUrl()。
注意密钥apikey、secret、url这几个值一定要配置正确。至此已实现论坛到网站的同步登录和退出。
DiscuzToolkit线程同步,相信这两个问题肯定会碰到:
(1)在注册用户时,碰到以下异常:当前会话所提交的call_id没有大于前一次的call_id
(2)注册用户时,碰到以下异常:An item with the same key has already been added.
解决办法:/article/4793443.html
解决方案中,有一处线程锁的问题:
lock (_syncRoot) 可直接用 lock (this)
相关文章推荐
- 64位系统使用VS2010开发32位ASP.NET应用--注意事项
- 使用ASP.NET AJAX的注意事项
- 使用ASP.NET制作Wap网站注意事项
- ASP.NET中异常处理的注意事项
- 我的摸索过程之IIS下配置asp.net 的注意事项
- 使用ASP.NET AJAX的注意事项
- asp.net mvc中model注意事项
- 在asp.net 2.0中使用CuteEditor 5.0的一个注意事项
- asp.net web定时器实现及注意事项
- asp.net开发mysql注意事项
- asp.net Server.MapPath方法注意事项
- ASP.NET Oracle数据库使用事务时注意事项
- Visual Studio2017中编写ASP.NET程序时使用C# 7.0元组Tuple新特性的一点注意事项
- ASP.NET 参数传递,长度限制,及使用注意事项。
- VS2013中ASP.NET使用MD5加密注意事项
- ASP.NET网站整合discuzNT论坛用户数据
- ASP.NET生成WORD文档服务器部署注意事项
- asp.net项目注意事项
- 我的摸索过程之IIS下配置asp.net 的注意事项
- 使用ASP.NET AJAX的注意事项