欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Discuz!NT 3与asp.net 整合的实例教程

程序员文章站 2024-03-09 16:17:35
如果编码方面有不严谨的地方,还希望各位多多包涵,并给出中肯的意见。 整合需要在原项目中添加由discuz!nt提供的 discuztoolkit语言包(c#) 另外为了方便...
如果编码方面有不严谨的地方,还希望各位多多包涵,并给出中肯的意见。
整合需要在原项目中添加由discuz!nt提供的
discuztoolkit语言包(c#)
另外为了方便整合,我还自己写了一个简单的项目dntaddnetsns,用来对discuz!nt和sns做一些简单的粘合。
现在向大家展示一下涉及api调用的一些代码片段:
复制代码 代码如下:

//之间为dnt的整合代码
try
{
discuz.toolkit.discuzsession ds = conformityhandler.initdiscuzsession();
ds.register(conformityhandler.creatediscuzntusername(ui.email),ui.password, ui.email, false);
ret = user.register(ui);//sns注册,获取注册信息
}
catch(discuz.toolkit.discuzexception d)
{
if (d.errorcode == 109)
{
ret = enumregister.emailrepeat;
}
}
//

如上是利用discuztoolkit中的方法注册用户的一个实例。(源码在register.aspx.cs中)
涉及到用户的安全信息的操作,需要获取authtoken,获取authtoken需要请求论坛的login.aspx?api_key=[key],然后论坛会通过get形式返回给设置好的callback地址一个authtoken,整合时需要使用authtoken的地方非常多,然而callback地址只能设置一个,针对此情况,我又专门新建了一个页面dntapihandler.aspx,此页面没有内容,只用来做callback中转,即在discuz!nt中设置callback地址为dntapihandler.aspx。然后根据next参数确定最终返回的应用程序页面。
最后列出来被添加过整合代码的页面,方便大家看源码。
复制代码 代码如下:

web.config
global.asax
register.aspx
user/ default.aspx
login.aspx
logout.aspx
accountset.aspx
userbase.aspx

如上的页面有的只改动了其.cs文件,有的都有修改。
如果想使用此整合项目,需要按照sns的安装说明安装部署。而且为了实现同步登录(由于sns并没有api,所以论坛方无法控制sns的登录),需要修改一个discuz!nt模板login.htm,在里面添加如下代码。
复制代码 代码如下:

<%csharp%>
if(request["api_key"]==null&&request.form["username"]!="admin")
response.redirect(【sns的登录页面路径】);
<%/csharp%>

点击下载源码