Discuz!NT3.6与网站整合(用户登陆与注销)解决方案

因为网站要加个论坛,所以就用到了Discuz!NT3.6。下面是我的一个解决办法。

1.将论坛放在网站的forum文件夹下

2.把Dnt.config移动到根目录下,其中的<Forumpath>/</Forumpath>改为<Forumpath>~/forum/</Forumpath>

3.将下面添加进根目录的web.config
<httpModules>
<add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
</httpModules>
<system.webServer>
<modules>
<!-- 注意:此节设置由Discuz!NT接管http请求。不会干涉对非Discuz!NT论坛路径下的请求。-->
<add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
</modules>
</system.webServer>

4.代码

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Discuz.Common;
using Discuz.Data;
using Discuz.Config;
using Discuz.Entity;
using Discuz.Common.Generic;
using Discuz.Forum;

namespace Discuz.Toolkit.WebSample
{
public partial class login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string str = "";
if (Request.Cookies["dnt"] != null)
{
HttpCookie dnt = Request.Cookies["dnt"];
str = "domain:" + dnt.Domain;
str += "过期时间" + dnt.Expires.ToString();
str += "是否有子键" + dnt.HasKeys.ToString();
str += "是否可以通过客户端脚本访问" + dnt.HttpOnly.ToString();
str += "名称:" + dnt.Name;
str += "虚拟路径" + dnt.Path;
str += "是否使用安全套接字层" + dnt.Secure.ToString();
str += "cookie值" + dnt.Value;
for (int i = 0; i < dnt.Values.Count; i++)
{
str += "---------------"+dnt.Values[i];
}

}
Response.Write(str);

}

private void userlogin()
{
int uid = 1; //这里的uid是我自己测试用的,uid可以从cookie中取得,也可以从数据库中取得
Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
OnlineUserInfo onlineUserinfo = Discuz.Forum.OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
Discuz.Forum.UserCredits.UpdateUserCredits(uid);
ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), config.Passwordkey, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
Discuz.Forum.OnlineUsers.UpdateAction(onlineUserinfo.Olid, UserAction.Login.ActionID, 0, config.Onlinetimeout);
Discuz.Data.Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());
}

private void loginout()
{
try
{
Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
OnlineUserInfo onlineUserinfo = Discuz.Forum.OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
int userid = Utils.StrToInt(ForumUtils.GetCookie("userid"), -1);

Discuz.Forum .OnlineUsers.UpdateOnlineTime(-999999, userid);

Discuz.Data.OnlineUsers.DeleteRows(onlineUserinfo.Olid);
ForumUtils.ClearUserCookie();
Utils.WriteCookie("dnttemplateid", "", -999999);
}
catch
{

}
}

protected void Button1_Click(object sender, EventArgs e)
{
userlogin();
}

protected void Button2_Click(object sender, EventArgs e)
{
loginout();
}
}
}

可以用上面代码进行测试,执行登陆后,再转到论坛,就发现论坛已经登陆了,执行退出登陆,论坛也将会退出登陆。

另外在发布到IIS后,记得设置下用户访问权限,不然会有错误。




转载于:https://www.cnblogs.com/whosedream/archive/2011/12/26/2301923.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Discuz!NT具有安全、高效、易用等特点,产品开放源代码下载三年的时间,受到了国内众多ASP.net项目用户的欢迎,成为国内ASP.net社区论坛产品的标杆。Discuz!NT3.1版本全面支持Windowsserver2008R2系统,并且支持集成模式。免费为商业用户提供64位编译版本。Discuz!NT3.1版本为项目用户专门开发了负载均衡、数据库读写分离、分布式缓存和检测工具一系列套件,为超大型社区建设提供了完美的技术解决方案Discuz!NTv3.6.601修复的问题 游客查看附件的样式不正确 编辑器转义了不应转义html代码 图片格式不正确导致官网出现内存不足 invisible=-2的帖子,有主题通知,但是却无法在帖子中看到 主题下沉无法沉到列表最底下 头像上传在子目录下潜在问题 版块/分类设置中,显示模式改为”传统模式“导致版块图标换行 发一个带有flash的主题或回帖,再编辑此贴,上传图片会缺少提示 简洁版页面,没有输出页面编码信息导致乱码 用快捷键发帖出现空白页,刷新正常 搜索页面里鼠标移至楼主名称上点'删除用户7天帖子'失效 后台开启远程附件后没法关闭 login.aspx页面,tab顺序不正确 开启2个web园后,在线时间不增加,排查代码 帖子英文内容导致热点调用被撑开 IE下,如果图片附件过大,导致上传框被遮挡 提示余额不足的样式错误 开启图片点击加载后,简洁版无法看图(点击加载无效) 帖子关闭状态下,依然会出现回帖框 窄版下,公告过长会导致文字遮挡 发帖时在'视频'按钮里插入土豆,优酷等视频无效 首页轮显图的出现错误,很有可能是缩略图方法的问题 附件上传,多了一些不应该出现的文字,而且样式没对齐 在24小时新帖的版块名称长度中设置0前台页面报错 ......

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值