DiscuzNT 论坛与主站的同步登录与退出
程序员文章站
2024-03-11 22:20:01
论坛域名是:forum.web.net(虚拟) 网站域名是:(虚拟too) 先用管理员帐户进入论坛后台在基本设置中,将“身份验证cookie域:”设置为.web.net 论...
论坛域名是:forum.web.net(虚拟)
网站域名是:(虚拟too)
先用管理员帐户进入论坛后台在基本设置中,将“身份验证cookie域:”设置为.web.net
论坛配置好后,复制bin文件夹的 discuz.forum.dll,discuz.entity.dll,discuz.data.dll,discuz.data.sqlserver.dll 和discuz.common.dll到网站的bin下。同样,dnt.config也放到网站根目录
贴个代码看,更清楚些。
using system;
using system.collections;
using system.configuration;
using system.data;
using system.web;
using discuz.forum;
using discuz.common;
using discuz.entity;
namespace website
{
public partial class _default : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
//下面的判断作用是:检测cookie中是不是有论坛的userid,如果有就说明有用户登录
if (request.cookies["dnt"] != null && request.cookies["dnt"].values["userid"] != null)
{
//从cookie中获得userid
int uid = convert.toint32(request.cookies["dnt"].values["userid"].tostring());
//得到这个用户的全部信息
userinfo a = discuz.forum.users.getuserinfo(uid);
//打印出来看看对不对。
response.write(a.username);
//这句代码是退出!清除cookie!!!
forumutils.clearusercookie();
}
else //没有用户?看我怎么登录的!
{
//先设俩变量
string uname = "rohan";
string upass = "mypassword";
//验证用户登录 如果正确返回userid,否则返回-1
int uid = users.checkpassword(uname, upass, true);
if (uid!=-1)
{
//下面都是官方整合说明文档里的内容了
loginlogs.deleteloginlog(dntrequest.getip());
//根据积分公式刷新用户总积分
usercredits.updateusercredits(uid);
//写入用户登录后的cookie
//××××××注意××××××这里有点特殊,原文是
//forumutils.writeusercookie(uid, utils.strtoint(dntrequest.getstring("expires"), -1), config.passwordkey, dntrequest.getint("templateid", 0), dntrequest.getint("loginmode", -1));
//这里我把config.passwordkey直接从论坛config文件夹下的general.config文件的节点提取出来了。这样就不用把论坛的相关文件拷贝到网站上了
forumutils.writeusercookie(uid, utils.strtoint(dntrequest.getstring("expires"), -1), "r254842j4z", dntrequest.getint("templateid", 0), dntrequest.getint("loginmode", -1));
//更新该用户最后访问时间
users.updateuserlastvisit(uid, dntrequest.getip());
}
}
}
}
}
网站域名是:(虚拟too)
先用管理员帐户进入论坛后台在基本设置中,将“身份验证cookie域:”设置为.web.net
论坛配置好后,复制bin文件夹的 discuz.forum.dll,discuz.entity.dll,discuz.data.dll,discuz.data.sqlserver.dll 和discuz.common.dll到网站的bin下。同样,dnt.config也放到网站根目录
贴个代码看,更清楚些。
复制代码 代码如下:
using system;
using system.collections;
using system.configuration;
using system.data;
using system.web;
using discuz.forum;
using discuz.common;
using discuz.entity;
namespace website
{
public partial class _default : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
//下面的判断作用是:检测cookie中是不是有论坛的userid,如果有就说明有用户登录
if (request.cookies["dnt"] != null && request.cookies["dnt"].values["userid"] != null)
{
//从cookie中获得userid
int uid = convert.toint32(request.cookies["dnt"].values["userid"].tostring());
//得到这个用户的全部信息
userinfo a = discuz.forum.users.getuserinfo(uid);
//打印出来看看对不对。
response.write(a.username);
//这句代码是退出!清除cookie!!!
forumutils.clearusercookie();
}
else //没有用户?看我怎么登录的!
{
//先设俩变量
string uname = "rohan";
string upass = "mypassword";
//验证用户登录 如果正确返回userid,否则返回-1
int uid = users.checkpassword(uname, upass, true);
if (uid!=-1)
{
//下面都是官方整合说明文档里的内容了
loginlogs.deleteloginlog(dntrequest.getip());
//根据积分公式刷新用户总积分
usercredits.updateusercredits(uid);
//写入用户登录后的cookie
//××××××注意××××××这里有点特殊,原文是
//forumutils.writeusercookie(uid, utils.strtoint(dntrequest.getstring("expires"), -1), config.passwordkey, dntrequest.getint("templateid", 0), dntrequest.getint("loginmode", -1));
//这里我把config.passwordkey直接从论坛config文件夹下的general.config文件的节点提取出来了。这样就不用把论坛的相关文件拷贝到网站上了
forumutils.writeusercookie(uid, utils.strtoint(dntrequest.getstring("expires"), -1), "r254842j4z", dntrequest.getint("templateid", 0), dntrequest.getint("loginmode", -1));
//更新该用户最后访问时间
users.updateuserlastvisit(uid, dntrequest.getip());
}
}
}
}
}
上一篇: ASP.NET 防止用户跳过登陆界面
下一篇: asp.net 字符串加密解密技术