• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-7-01 11:09 | 作者: admin | 来源: | 查看: 12次 | 进入软件测试论坛讨论

领测软件测试网

  Asp.Net Forums以下简称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吸收掉错误,而无返回,你不一定要这么做。

public void Register()
{
 try
 {
  User user = new User();
  user.Username = Username;
  user.Password = Password;
  user.Email = "Anonymous@Anonymous.com";
  user.AccountStatus = UserAccountStatus.Approved;
  user.IsAnonymous = false;
  Users.Create(user, false);
 }
 catch
 {
 }
}

  登录

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

public void Login()
{
 try
 {
  User userToLogin = new User();
  userToLogin.Username = Username;
  userToLogin.Password = Password;

  LoginUserStatus loginStatus = Users.ValidUser(userToLogin);

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

    int userid = Users.FindUserByUsername(userToLogin.Username).UserID;
    ArrayList roles = Roles.GetRoles(userid);

    foreach (Role role in roles)
    {
     if (role.Name == "Site Administrators" || role.Name == "Global Administrators")
     {
      allowed = true;
      break;
     }
    }
    if (!allowed)
    {
     return;
    }
   }
   set_Cookie(userToLogin.Username, "1");
  }
 }
 catch
 {
 }
}

  修改密码

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

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

  设置cookie

public void set_Cookie(string Username, string Selet_item)
{
 if(Selet_item == "0")
 {
  FormsAuthentication.SetAuthCookie(Username,false);
 }
 else
 {
  ForumContext forumContext = 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判断一下谁可以访问这页!

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网