您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz nt整合登陆的方法
千琴2025-06-25Discuz教程已有人查阅
导读在做Discuz的NT2.0与自己的系统整合过程中,使用的是Discuz的NT2.0的用户数据作为我的用户数据。把Discuz的NT2.0文件存放入bbs目录,把bbs目录设置为虚拟目录。
在做Discuz的NT2.0与自己的系统整合过程中,使用的是Discuz的NT2.0的用户数据作为我的用户数据。把Discuz的NT2.0文件存放入bbs目录,把bbs目录设置为虚拟目录。把DNT.config拷贝到根目录。
登录很简单直接设置表单吧
aspx/1/usercp.aspx的退出链接是这样的,在101行
在BasePage的构造函数中给userkey赋值了
登录很简单直接设置表单吧
<form action="bbs/login.aspx?reurl=<%= reurl %>" method="post">
<div id="Main" class="sign">
<h2>用户登录</h2>
<div class="meat">
<form>
<div>
<label class="label_input" for="mail">用户名:</label>
<input type="text" id="mail" class="txt" name="username" />
</div>
<div>
<label class="label_input" for="password">密码:</label>
<input type="password" id="password" class="txt" name="password" />
</div>
<div class="act">
<input type="submit" value="登录" class="btn" />
<a href="bbs/getpassword.aspx" target="_blank">忘记密码?</a>
</div>
</form>
</div>
</div>
</form>
reurl的值
protected string reurl = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (Request.UrlReferrer != null)
reurl = HttpUtility.UrlEncode(Request.UrlReferrer.PathAndQuery);
else
reurl = HttpUtility.UrlEncode("/default.aspx");
}
通过以下代码拿到了用户ID
if (Request.Cookies.Count > 0)
{
int uid = 0;
if (Request.Cookies["dnt"] != null && Request.Cookies["dnt"].Values["userid"] != null)
int.TryParse(Request.Cookies.Get("dnt").Values.Get("userid"), out uid);
读取一个XML文件获取人物信息。因为我在配置过程中总是有配置文件目录存放错误问题,因此,直接用了个XML文件,不用去仔细看目录怎么配置了。
XmlTextReader reader = new XmlTextReader("http://localhost/bbs/UserXML.aspx?u=" + uid + "&rd=" + rd.Next(10000).ToString());
XML文件代码是这样的
<%@ Page Language="C#" AutoEventWireup="false" EnableViewState="false" Codebehind="UserXML.aspx.cs" %>
<%@ Import namespace="System.Data" %>
<%@ Import namespace="Discuz.Common" %>
<%@ Import namespace="Discuz.Forum" %>
<%@ Import namespace="Discuz.Entity" %>
<script runat="server">
override protected void OnInit(EventArgs e)
{
base.OnInit(e);
int userid = 0;
int.TryParse(Request.QueryString["u"], out userid);
StringBuilder sb = new StringBuilder();
if (userid > 0)
{
UserInfo ui = Users.GetUserInfo(userid);
sb.Append("<?xml version=\"1.0\"?>\n");
sb.Append("<root>\n");
sb.Append("\t<username>");
sb.Append(ui.Username);
sb.Append("\t</username>\n");
sb.Append("\t<userid>");
sb.Append(ui.Uid);
sb.Append("\t</userid>\n");
sb.Append("\t<userkey>");
sb.Append(ui.Password);
sb.Append("\t</userkey>\n");
sb.Append("</root>\n");
}
else
{
sb.Append("<?xml version=\"1.0\"?>\n");
sb.Append("<root>\n");
sb.Append("\t<username>");
sb.Append("游客");
sb.Append("\t</username>\n");
sb.Append("\t<userid>");
sb.Append(-1);
sb.Append("\t</userid>\n");
sb.Append("\t<userkey>");
sb.Append(7);
sb.Append("\t</userkey>\n");
sb.Append("</root>\n");
}
Response.Write(sb.ToString());
}
</script>
做退出的时候要取userkey,我看了他的源代码aspx/1/usercp.aspx的退出链接是这样的,在101行
templateBuilder.Append(" <a href=\"" + forumurl.ToString() + "logout.aspx?userkey=" + userkey.ToString() + "\" class=\"reg\">退出</a>\r\n");
从第一行
<%@ Page language="c#" Codebehind="usercp.aspx.cs" AutoEventWireup="false" EnableViewState="false" Inherits="Discuz.ForumPage.usercp" %>
看到该页使用了Dll文件里的usercp类。经查看是Discuz.Web.Dll里的usercp类,其父类是Discuz.Web.UI.Dll里的BasePage,而这个userkey正是在BasePage类定义的字段。在BasePage的构造函数中给userkey赋值了
this.userid = this.oluserinfo.Userid;
this.usergroupid = this.oluserinfo.Groupid;
this.username = this.oluserinfo.Username;
this.password = this.oluserinfo.Password;
if (this.password.Length > 0x10)
{
this.userkey = this.password.Substring(4, 8).Trim();
}
else
{
this.userkey = "";
}
根据这样我也就可以给我使用的userkey赋值为
while (reader.Read())
{
if (reader.Name.Equals("username"))
username = reader.ReadInnerXml();
if (reader.Name.Equals("userid"))
userid = ConvertHelper.str_to_int(reader.ReadInnerXml());
if (reader.Name.Equals("userkey"))
{
string password = reader.ReadInnerXml();
if(password.Length > 0x10)
userkey = password.Substring(4, 8).Trim(); ;
}
}
Dll里实际退出代码是这样的
protected override void ShowPage()
{
base.pagetitle = "用户退出";
base.username = "游客";
int userid = base.userid;
base.userid = -1;
StringBuilder builder = new StringBuilder();
builder.Append("if (top.document.getElementById('leftmenu')){");
builder.Append("\t\ttop.frames['leftmenu'].location.reload();");
builder.Append("}");
base.AddScript(builder.ToString());
base.SetUrl(Utils.UrlDecode(ForumUtils.GetReUrl()));
base.SetMetaRefresh();
base.SetShowBackLink(false);
if (DNTRequest.GetString("userkey") == base.userkey)
{
base.AddMsgLine("已经清除了您的登录信息, 稍后您将以游客身份返回首页");
Users.UpdateOnlineTime(userid);
OnlineUsers.DeleteRows(base.olid);
ForumUtils.ClearUserCookie();
Utils.WriteCookie(Utils.GetTemplateCookieName(), "", -999999);
}
else
{
base.AddMsgLine("无法确定您的身份, 稍后返回首页");
}
}
本文标签:
很赞哦! ()
下一篇:Discuz常用函数介绍
相关教程
- 帝国CMS包含登陆,注册,留言,反馈,点击刷新验证码代码写法
- 帝国cms二次开发邮箱或用户名登陆的实现方法
- Discuz!NT论坛整合使用membership登陆信息的方法
- MoinMoin Wiki与Discuz论坛的单点登陆整合方法
- phpsso与Discuz无法同步登陆的解决方法
- Discuz x3 UCenter实现同步登陆的方法
- Discuz的NT3.0API跨域登陆不用论坛的登陆页面
- Discuz_X1.5增加手机号码登陆的实现方法
- PHPCMSV9两步实现修改后台管理登陆路径代码示例
- phpcmsV9实现QQ登陆OAuth2.0代码示例
- phpcms v9和discuz X3.1实现同步登陆退出论坛的方法
- PHPCMS提示\phpcms\modules\member\index.php用户登陆SQL注入漏
图文教程
Discuz模板安装后显示异常的原因和解决方法
在处理Discuz模板显示异常时,最关键的是理解这些问题可能源自哪里。通常,问题可能出现在模板文件的编码、样式表的引用、JavaScript脚本的加载、或者是模板与Discuz版本的不兼容性上。
Discuz!NT的.net中伪静态方式
Discuz!NT的.net中伪静态
Discuz!NT在64位Windows下运行常见问题
非常搞,等了快一年Discuz!NT的免费版本依旧不支持64位Windows。官方出了64位windows支持的指南居然是叫用户把IIS设置为32位兼容模式。说了等于没说
discuz中常用函数
js密码验证 install/js/setup.js将内容传送页面ajax注册(各页面通用ajax,js函数):register.aspxjs:emplates\default\ajax.js
相关源码
-
(自适应响应式)陶瓷研磨盘抛光机械设备pbootcms网站模板本模板基于PbootCMS系统开发,为研磨抛光设备制造企业设计,特别适合陶瓷研磨盘、抛光设备等表面处理设备展示。采用响应式布局技术,确保各类设备的参数和工艺在不同终端上都能清晰呈现。查看源码 -
(PC+WAP)绣花刺绣传统手工工艺pbootcms网站源码下载这款基于PbootCMS的网站模板为刺绣和传统手工艺行业设计,采用优雅的布局和精致的细节处理,能够呈现手工艺品的独特韵味和文化内涵。模板结构合理,功能完善,是手工艺从业者展示作品的理想选择。查看源码 -
帝国cms7.5商城模板带图片视频广告位功能本模板基于帝国CMS7.5内核开发,为内容电商平台设计,集成文章、图片、视频多媒体展示与广告位管理功能。采用智能响应式技术,确保商品内容在不同设备上获得较优呈现效果,帮助快速构建专业的内容营销平台。查看源码 -
(自适应)WordPress二次元博客主题SakurairoSakurairo主题为二次元内容创作者设计,提供丰富的动漫风格元素和个性化的展示效果。该主题在原有Sakura主题基础上进行了功能增强,支持多种自定义设置,满足动漫爱好者建立个人博客的需求。查看源码 -
(PC+WAP)历史复古古典古籍文章资讯类pbootcms模板下载本模板基于PbootCMS系统开发,为古籍研究、历史文献类网站设计,特别适合展示古典书籍、历史档案等文化内容。采用复古风格设计,同时具备现代化响应式布局,确保在PC和移动设备上都能呈现优雅的阅读体验。查看源码 -
自适应营销型IT网络工作室互联网建站公司pbootcms网站模板为IT网络服务商、建站企业打造的高性能营销门户,基于PbootCMS开源内核深度开发采用HTML5自适应架构,实现PC与手机端数据实时同步交互。查看源码
| 分享笔记 (共有 篇笔记) |
