当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET Forums与现有系统整合方案示例

ASP.NET
调用另外一个同名的重载函数漏掉括号出现的严重问题
DataGrid模板列应用:在DataGrid中用CheckBox控制TextBox的Enabled属性
使用存储过程的一个小例子
.net中xmlhttp下载文件的方法参考
简单的c#文本文件读写
我的C#学习过程 第一天 安装
在数据库中开始一个事务。
用ASP.NETt实现简单的文字水印
C/S系统中三层结构(Com/Com+)的测试成功实现
VB 二进制块读写类模块应用实例,包括一个文件拷贝和一个文件二进制比较的例子。
扫雷程序“布雷”代码(vb)
关于网络连接状态的编程
c#中ref和out参数使用时需要注意的问题
use Assembly to call a method
在VBA中调用AUTOCAD打印文件
在VS.NET的
昨天折腾了一晚上,哪位高手帮我看看!急!
Net是未来的趋势吗?
如何修改自定义Webpart 的标题(downmoon)
[收藏]ASP.Net生成静态HTML页 选择自 coofucoo 的 Blog

ASP.NET Forums与现有系统整合方案示例


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 146 ::
收藏到网摘: n/a

Asp.NetForums以下简称ANF,版本2.0,本文系数流水帐,只是记录了一下今的工作,没啥技术含量。

已有系统已经有自己的一套用户系统,需要挂接ANF,要求在已有系统用户注册,登录,修改密码时,在ANF中也做出相应反映。不要求ANF的用户变化影响已有系统,只是单向同步。

在尽量少动已有代码的情况下找一种简单的方式来完成整合。之前看了宝玉的CnForums和已有系统的整合方案,最后偷懒决定在已有系统上述动作结束后将用户相关信息和操作类型附加在url后面传给一个新建页来处理在ANF中执行相关操作。

这新建页暂且叫bridge.aspx当然要建在ANF的项目中该using的都using了,负责接收用户名密码等信息然后执行相应的ANF操作。

注册

注册很简单,我的Username和Password是自己包装的属性,从Request中获取信息,我们系统没有Email就随便添一个,接下来要给AccountStatus设置为通过,IsAnonymous关掉。Users.Create中那个bool参数代表是否给用户发送注册成功提示的邮件,我没邮件当然关掉。

注意我在所有的地方都catch吸收掉错误,而无返回,你不一定要这么做。

publicvoidRegister()
{
 try
 {
Useruser=newUser();
user.Username=Username;
user.Password=Password;
user.Email="[email protected]";
user.AccountStatus=UserAccountStatus.Approved;
user.IsAnonymous=false;
Users.Create(user,false);
 }
 catch
 {
 }
}

登录

基本上都是复制粘贴过来的,注意最后的setcookie,这是同步登录的关键。

publicvoidLogin()
{
 try
 {
UseruserToLogin=newUser();
userToLogin.Username=Username;
userToLogin.Password=Password;

LoginUserStatusloginStatus=Users.ValidUser(userToLogin);

if(loginStatus==LoginUserStatus.Success)
{
 if(!Globals.GetSiteSettings().AllowLogin)
 {
boolallowed=false;

intuserid=Users.FindUserByUsername(userToLogin.Username).UserID;
ArrayListroles=Roles.GetRoles(userid);

foreach(Roleroleinroles)
{
 if(role.Name=="SiteAdministrators"||role.Name=="GlobalAdministrators")
 {
allowed=true;
break;
 }
}
if(!allowed)
{
 return;
}
 }
 set_Cookie(userToLogin.Username,"1");
}
 }
 catch
 {
 }
}

修改密码

这个假设是基于登录已经发生的,如果你的假设不是这样需要加入自己的判断。

publicvoidChangePassword()
{
 try
 {
ForumContextforumContext=ForumContext.Current;
Useruser=forumContext.User;
if(user!=null)
{
 user.ChangePassword(Password,NewPassword);
}
 }
 catch
 {
 }
}

设置cookie

publicvoidset_Cookie(stringUsername,stringSelet_item)
{
 if(Selet_item=="0")
 {
FormsAuthentication.SetAuthCookie(Username,false);
 }
 else
 {
ForumContextforumContext=ForumContext.Current;
FormsAuthentication.SetAuthCookie(Username,true);
forumContext.Context.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.
_Now.AddDays(System.Convert.ToInt32(Selet_item));
 }
}

最后在已有系统的注册,登录,修改的最后Response.Redirect这页就ok,不喜欢Redirect,Server.Transfer,xmlhttp都行,看你需要的展现了。还有一点很关键,就是要加密了你传输的字符串,要不明文就……※¥※×%※×,要是嫌还不安全就用ip判断一下谁可以访问这页!