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

ASP.NET
ASP.NET开发:简化应用程序的开发支持Web标准
asp.net XMLHttpRequest实现用户注册前的验证
asp.net 页面间传值方法小结
asp.net url重写浅谈
asp.net 验证码生成和刷新及验证
C#精髓 GridView72大绝技 学习gridview的朋友必看
实例说明asp.net中的简单角色权限控制
asp.net网站开发包wq.dll打包下载
js与ASP.NET 中文乱码问题
asp.net checkbox 动态绑定id GridView删除提示
asp.net TextBox回车触发事件 图片在img显示
asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
asp.NET 脏字过滤算法
asp.NET 脏字过滤算法 修改版
asp.net sql 数据库处理函数命令
asp.net Javascript 的几种写法与提示
ASP.NET MVC学习笔记
asp.net 中国身份证号码验证代码 非正则
Asp.net中使用Sqlite数据库的方法
asp.net 中文字符串提交乱码的解决方法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 164 ::
收藏到网摘: 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判断一下谁可以访问这页!