首页 > 编程 > .NET > 正文

浅谈asp.net Forms身份验证详解

2024-07-10 12:49:33
字体:
来源:转载
供稿:网友

在做网站的时候,都会用到用户登录的功能。对于一些敏感的资源,我们只希望被授权的用户才能够访问,这让然需要用户的身份验证。对于初学者,通常将用户登录信息存放在Session中,笔者在刚接触到asp.net的时候就是这么做的。当我将用户信息存在在Session中时,常常会遇到Session丢失导致用户无法正常访问被授权的资源,保持用户登录状态时的安全性问题,无休其实,在asp.net中,我们有更好的解决方案,那就是通过Forms身份验证,从而对用户进行授权,这种方法可以轻松的保持用户的登录状态(如果用户想这样),便捷的用户授权配置,增强的安全性等好处。废话不再多说,下面我们来做一个简单的用

在做例子之前,我们先定义如下用户类,类名为SampleUser,代码如下:

public partial class SampleUser  {    string username;    public string UserName    {      get { return username; }      set { username = value; }    }    string userpwd;    public string UserPWD    {      get { return userpwd; }      set { userpwd = value; }    }    public override bool Equals(object obj)    {      SampleUser other = obj as SampleUser;      if (other == null || other.UserName != this.UserName)        return false;      return true;    }  }  public partial class SampleUser  {    public static List<SampleUser> userList = new List<SampleUser> {      new SampleUser() { UserName = "01", UserPWD = "123"},       new SampleUser() { UserName = "02", UserPWD = "123" },       new SampleUser() { UserName = "03", UserPWD = "123" },       new SampleUser() { UserName = "04", UserPWD = "123" },     };    public static SampleUser GetUser(string userName)    {      return userList.Find(u=>u.UserName == userName);    }  }

在类SampleUser中,定义了UserName和UserPWD两个字段,分别用来存储用户的登录名和密码信息。在SampleUser类的另一部分中,我们提供了一个用户的静态类表,用来代替存储在数据库中的用户信息,提供一个方法GetUser,用来获取用户信息。

在这个例子中,我们演示用户必须进行登录才能访问网站的资源,如果没有登录,则将用户导航到login.aspx页面中。

第一步,在web.config中添加配置信息,说明网站要使用Forms身份验证,并指定登录页面和默认登录成功后的跳转页面,然后指定拒绝未登录用户的访问,代码如下:

<authentication mode="Forms">   <forms loginUrl="~/Login.aspx" defaultUrl="~/Default.aspx" />  </authentication>  <authorization>   <deny users="?"/>  </authorization>

完成这一步后,我们再打开Default.aspx页面,在没有登录的情况下,页面会被导航到Login.aspx页面,我们的第一步的目的已经达到了。

第二步,完成Login.aspx的页面逻辑。在页面中添加两个TextBox控件,用来输入用户名和密码;添加一个CheckBox控件,用来选择是否保持登录状态;添加一个Button控件,响应用户的登录操作。相应的代码如下:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表