一种安全、高效、简单的登陆算法

出处:http://dotnet.csdn.net/page/c2a65658-1671-4e07-8c46-1f099887876e#

来源:博客园

  现在微软的vs2005中自带的membership已经能够很好的满足大多数场景下的用户管理的需求。但是某些特殊情况下我们还须要订制的用户登录系统,比方说为了效率、安全等。

  另外即使只是做做试验也是不错的尝试。

  本文并没有对各种登陆算法进行对比探讨。而是仅仅给出了一个比较安全、高效也经历了实际的考验的算法供大家参考。

  本文中给出一个实例的节选,希望能给各位启示。

  该算法的特点为:

  1、安全、仅仅使用用户名(考生号)来访问数据库,这样需要控制的项就比较少了.即使进行安全检查系统压力也小。
  2、高效、一般情况下用户操作仅需一次数据访问,所需的数据就全部返回了。而且单键访问数据执行效率也高。
  3、比较完整的简单的分层设计,可以供入门程序员参考(作为教学人员,我的注释写的很详细,具有一定的可读性)

  一、建立数据模型:数据集如下图:存放在app_code目录中,命名为kaoshengs.xsd

  1、考生表的结构。依次为考生号、考生姓名、录取结果、密码(口令,默认是空值。)、查分密码(该系统中每个考生有自己的随机查分密码覆膜印在准考证上,第一次需要使用该密码来登录系统并修改密码)、报名点代码、县区代码、地市代码(后边3个代码是为了管理使用)。

  2、适配器。增加了几个访问数据的方法,有名称和参数可以很容易的看出,不再解释了。

  二、对该考生对象的操作的类库。存放在app_code目录中,命名为kaosheng.cs

  需要注意的是,该系统在登陆时需要的操作比较多

1、有用户名和密码能够登录
2、有录取结果,显示录取结果,并不再允许继续操作
3、密码为空,则为第一次登录允许使用查分密码来修改口令
4、修改已有的口令

1using System;
2using System.Data;
3using System.Configuration;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.WebControls;
8using System.Web.UI.WebControls.WebParts;
9using System.Web.UI.HtmlControls;
10using System.Collections;
11
12/** <summary>
13/// kaosheng 的摘要说明
14/// edit by lww @2007-04-21
15/// 考生对象的相关操作
16/// </summary>
17public class kaosheng
18{
19 public kaosheng()
20 {
21 //
22 // TODO: 在此处添加构造函数逻辑
23 //
24 }
25
26 /** <summary>
27 /// 验证用户
28 /// </summary>
29 /// <param name="ksh"></param>
30 /// <param name="code"></param>
31 /// <returns>
32 /// 根据返回进行跳转
33 /// 返回值为arrylist 其中
34 /// retal[0]存放int形式的返回值
35 /// 其中
36 /// 0:系统出错、数据库连接?
37 /// 1:已被录取
38 /// 2:登录正确
39 /// 3:首次登录需导向修改页面
40 /// 4:登录密码不对(已有但是不正确)
41 /// 5:未更改过密码,并且查分码不对
42 /// 6:错误的考生号
43 /// retal[1]之后存放string附加值
44 /// 标号 0 1 2 3 4 5 6
45 /// 包括: 返回类型 考生号、考生姓名、县区、 地市
46
47 /// </returns>
48 public static ArrayList yanzheng(string ksh,string code)
49 {
50 /**根据输入的考生号和密码进行判断
51 ///由于这里需要判断的项比较多,所以采用将考生相关信息返回的方式
52 ///根据输入的考生号,得到返回值。包括:考生姓名、密码、查分密码、录取信息
53 ArrayList ksinfo= getks(ksh);
54 ArrayList retal = new ArrayList();
55 if (ksinfo[0].ToString().Trim() == "0")
56 {//错误考生号
57 retal.Add("6");
58 return retal;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值