您的位置:首页 > 其它

身份验证(表单验证),Cookies及对称加密

2007-03-26 22:08 323 查看

身份验证(表单验证),Cookies及对称加密(ASP.net-1.1)

一、身份验证的三种模式:
ASP.net下的身份验证模式有大致有三种,一是windows验证,就是每一个来访都都要求有一个windows帐号,这种验证是最安全的,但也是最昂贵的,因为你得为每一个来访用户添加一个windows帐号。这对于一些中小型网站,确切的说是没有自己独立的服务器的B/S模式应该程序来说,都是不可能的事。

第二种方案是用MS的Passpost验证,这种验证是MS提供的一种集中式身份验证,如果用户启用了Passport身份验证的网站上登录,他就被自动转移到passport网站,在输入用户名和口令之后,再被转移回来。这种方案的好外是你不用管理用户名和帐号了,MS都帮你做了。然而,它的部署有些麻烦,而且使用验证时,也比较麻烦,要来回进行部署。你可以到www.passport.com或者在MS的网站上查找相关信息。

第三种方案就是我今天要重点说明的,表单验证模式。

二、表单验证:
你可以在web.config中启动表单验证。

< authentication mode ="Forms" >
< forms loginUrl ="login.aspx" protection ="None" name ="WebbUser" path ="/" />
</ authentication >
详细的说明可以在MSDN里查找authentication。添加完认证后,就是做一个登录页而,让用户取得认证。在DotNet下,已经很好的集成了认证票据的生成模式。认证票据其实就是一个加密了的Cookies,后面我将说明如何自己定义票据,及自己定义加密的Cookies来做自己的票据类。

当取得用户的登录名与密码后(一般是从数据库里查询并验证),如果用户是合法的,那么就应该给用户设置一个认证的票据:
FormsAuthentication.RedirectFromLoginPage();
上面的方法给用户添加一个认证并返回访问的页面上去。从此,用户的机器上就多了一个Cookies了,这个Cookies就是用户认证的信息,当然它是经加密了的。这样,用户就可以访问要求身份验证的页面了,因为这时候,用户的所用访问都将带着这个Cookies来提交了。

我们可以从Form的User的实例上取得用户的验证信息,它其实是FormsIdentity的一个实例:
private void Page_Load( object sender, System.EventArgs e)
private void Page_Load( object sender, System.EventArgs e)
public virtual void Login( bool i_autoLogin)
public virtual void Login( long i_days)
public void LoadDataFromCookies()
private void Page_Load( object sender, System.EventArgs e)
public static string Encrypt( string i_key, string i_IV, string i_data)

public static string Decrypt( string i_key, string i_IV, string i_data)
static public string GetMD5( string i_data)
{
byte [] m_datas = Encoding.ASCII.GetBytes(i_data);
MD5CryptoServiceProvider m_MD5 = new MD5CryptoServiceProvider();
byte [] m_value = m_MD5.ComputeHash(m_datas);
return BitConverter.ToString(m_value);
}
总结:其实.net下的表单验证就是一个Cookies,我们不仅可以自己定义验证票据,而且还可以自己模拟验证模式来自己添加Cookies来更加灵活的进行用户身份验证及角色处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: