67251026 - 2008-5-7 14:23:00
在DiscuzNT的general.config中设置:
<CookieDomain>.whatscar.com </CookieDomain>
把DiscuzNT的dll文件拷贝的网站的bin目录,把Discuz的config文件夹和DNT.config文件也拷贝到www网站的根目录下。
把DiscuzNT的dll Import到工程中来
在自己的config中配置
<appSettings>
<add key="domainName" value=".whatscar.com "/>
</appSettings>
引用:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.IO;
using System.Security.Cryptography;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Discuz.Common;
using Discuz.Forum;
using Discuz.Config;
using Discuz.Entity;
public void UserLogin( string username,string userpass)
{
string password = userpass;//密码
string pass1 = (FormsAuthentication.HashPasswordForStoringInConfigFile(password.Trim(), "MD5"));//MD5加密
string pass2=pass1.ToLower();
bool IsPersistent = false;
FormsAuthentication.SetAuthCookie(username, IsPersistent);
HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
string domainName = ConfigurationManager.AppSettings["domainName"];
DateTime expires;
if (IsPersistent) expires = DateTime.Now.AddMinutes(525600);//一年
else expires = DateTime.Now;
SetCookie(cookie, domainName, IsPersistent, expires);
Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
int uid;
if (ser.BbsGetUidByName(username, pass2).Tables[0].Rows.Count != 0)
{
uid = int.Parse(BbsGetUidByName(username, pass2).Tables[0].Rows[0]["uid"].ToString());
}
else
{
uid = -1;
}
if (uid != -1)
{
ShortUserInfo __userinfo = Users.GetShortUserInfo(uid);
if (__userinfo.Groupid == 8)
{
Response.Write("抱歉, 您的用户身份尚未得到验证");
//...
//
if (config.Regverify == 1)
{
//这里添加代码提示“请您到您的邮箱中点击激活链接来激活您的帐号"并return退出
//...
//
}
if (config.Regverify == 2)
{
//这里添加代码提示“您需要等待一些时间, 待系统管理员审核您的帐户后才可登录使用"并return退出
//...
//
}
}
else
{
//删除之前的错误登录信息
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));
//更新用户最后动作,如不需要可不执行
OnlineUsers.UpdateAction(uid, UserAction.Login.ActionID, 0, config.Onlinetimeout);
//更新该用户最后访问时间
Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());
//登录完毕,此处添加代码提示登录成功并转向到其它页面
//...
//
Response.Write(uid);
}
}
else
{
int errcount = LoginLogs.UpdateLoginLog(DNTRequest.GetIP(), true);
if (errcount > 5)
{
//这里添加代码提示“您已经输入密码5次错误, 请15分钟后再试"并return退出
//...
//
}
else
{
//AddErrLine("密码或安全提问第" + errcount.ToString() + "次错误, 您最多有5次机会重试");
//这里添加代码提示“密码或安全提问错误"并return退出
//...
//
}
}
}
/// <summary>
/// 论坛整合
/// </summary>
/// <param name="name">用户名</param>
/// <param name="password">密码</param>
/// <returns></returns>
public DataSet BbsGetUidByName(string name,string password)
{
string sqlstr = "SELECT [uid],[username]FROM [whatscar].[dbo].[dnt_users] where username='" + name + "' and password='" + password + "'";
SqlDataAdapter da = new SqlDataAdapter(sqlstr, con);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
然后调用UserLogin这个方法就可以了
smdcn - 2008-5-14 18:03:00
其实直接引用DZNT的DLL是最方便的办法= =
67251026 - 2008-6-11 11:12:00
这个是2个域名下 - -!!
shp_yt - 2008-6-11 21:40:00
有一个域名下的吗?也就是说dis做为虚拟目录配置的
userid - 2008-6-12 9:49:00
不错的方法