开发日志:使用Asp.Net中的"Forms"验证方式,操作用户权限

一、web.config设置

 

 
  
< machineKey validationKey ="DD305F238C8F26103323F10B1A655ED9FA7DBB7A" decryptionKey ="70DE128000E565A7F8441A4C091C11EC8C5BB9B4D4EDA7A1" validation ="SHA1" />
< authentication mode ="Forms" >
< forms name ="SKAPP.ASPXAUTH" loginUrl ="~/login.aspx" protection ="All" timeout ="10" path ="/" />
</ authentication >

 

1、authentication

作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。<authentication> 元素必需与<authorization> 节配合使用。

示例:

以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。

<authentication mode="Forms" >
<forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>

</authentication>

其中元素loginUrl表示登陆网页的名称,name表示Cookie名称。

 

2、machineKey

作用:元素对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证

属性

 

属性 说明

decryption

可选的 String 属性。

指定用于对数据进行解密的哈希算法的类型。

此属性可以为下列可能值之一。

说明

Auto

指定 ASP.NET 基于配置的默认设置来确定使用哪个解密算法。这是默认值。

AES

指定 ASP.NET 使用 AES (Rijndael) 算法来对数据进行解密。AES 是用于对数据进行解密的默认算法。

3DES

指定 ASP.NET 使用 TripleDES 算法来对数据进行解密。TripleDES (3DES) 算法使用 DES 算法的三次连续迭代。

此属性是 .NET Framework 2.0 版中的新属性。

默认值为 "Auto"

decryptionKey

必选的 String 属性。

指定用于对数据进行加密和解密的密钥或者生成该密钥的进程。当 validation 设置为 TripleDES 字段时,该属性用于 Forms 身份验证加密和解密以及视图状态加密。

如果向此属性添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。IsolateApps 也是默认值的一部分。

如果您需要在 Web 服务器网络(网络场)中支持配置,请手动设置此属性以确保配置保持一致。

此属性可以为下列可能值之一。

说明

AutoGenerate

指定 ASP.NET 生成随机密钥并将其存储在 LSA 中。该值是默认值。如果向 decryptionKey 值添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。

value

指定一个手动分配的密钥。该值必须手动设置为十六进制字符串,以确保配置在整个网络场中保持一致。使用 DES 加密时,密钥长度应该为 16 个字符;而使用三重 DES (3 DES) 加密时,密钥长度应该为 48 个字符。如果要使用长度小于最大长度的密钥,则应通过真正的随机方式(例如,通过使用 RNGCryptoServiceProvider 类)来创建这些密钥。只有在计算机使用 128 位加密的情况下,ASP.NET 才能使用三重 DES。如果向 decryptionKey 值添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。

默认值为 "AutoGenerate,IsolateApps"

validation

必选的 MachineKeyValidation 属性。

指定用来验证数据的加密类型。

此属性可以为下列可能值之一。

说明

AES

指定 ASP.NET 使用 AES (Rijndael) 算法来对数据进行解密。AES 是用于对数据进行解密的默认算法。

MD5

指定 ASP.NET 使用 Message Digest 5 (MD5) 哈希算法。此算法的性能比 SHA1 好。

SHA1

指定 ASP.NET 使用 SHA1 哈希算法。使用此算法可增强安全性。

该值是默认值。

TripleDES

指定 ASP.NET 使用 TripleDES 算法来对数据进行解密。TripleDES 算法使用 DES 算法的三次连续迭代。

在 .NET Framework 1.0 和 1.1 版中,该值为 "3DES"

默认值为 "SHA1"

validationKey

必选的 String 属性。

指定用于验证加密数据的密钥。当 enableViewStateMACtrue 时,validationKey 用于创建消息身份验证代码 (MAC),以确保视图状态未被篡改。validationKey 还可用于生成进程外、应用程序特定的会话 ID,以确保每个会话具有独立的会话状态变量。

如果向 ValidationKey 值添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。IsolateApps 也是默认值的一部分。

如果您需要在 Web 服务器网络(网络场)中支持配置,请手动设置 ValidationKey 属性以确保配置保持一致。

validationKey 属性可以为下列可能值之一。

说明

AutoGenerate

指定 ASP.NET 生成随机密钥并将其存储在 LSA 中。此选项是默认值。如果向 validationKey 值添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。

value

指定一个手动分配的密钥。该值必须手动设置为十六进制字符串,以确保配置在整个网络场中保持一致。使用 DES 加密时,密钥长度应该为 16 个字符;而使用三重 DES 加密时,密钥长度应该为 48 个字符。如果要使用长度小于最大长度的密钥,则应通过真正的随机方式(例如,通过使用 CryptographyRNGCryptoServiceProvider 类)来创建这些密钥。只有在计算机使用 128 位加密的情况下,ASP.NET 才能使用三重 DES。如果向 validationKey 值添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。

默认值为 "AutoGenerate,IsolateApps"

二、记录用户信息
ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1 , // 票据版本号
MemberID + " ; " + txtMemberNo.Text, // 要记录的用户信息,在这里用多项信息用“;”号分隔
DateTime.Now, // 用户信息记录时间
DateTime.Now.AddMinutes( 30 ), // 用户信息过期时间
true , // 以Cookies的方式记录用户信息
dr[ " Roles " ].ToString(), // 同时写入记录信息的用户其他信息,这里记录了用户权限
FormsAuthentication.FormsCookiePath // 写入Cookies的路径
);

string hash = FormsAuthentication.Encrypt(ticket); // 加密要写入Cookies的用户信息

HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
// 要写入的Cookies的名称
hash // 加密后的用户信息
);
 
if (ticket.IsPersistent) // 如果用户信息保存是持久性的
cookie.Expires = ticket.Expiration; // 写入Cookies的过期日期

Response.Cookies.Add(cookie);
// 写入Cookies

 

三、读取用户信息

 

 

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
if (HttpContext.Current.User.Identity.IsAuthenticated) // 用户是否通过验证
{
string [] parts = HttpContext.Current.User.Identity.Name.Split( ' ; ' ); // 返回记录的用户信息
return Convert.ToInt32(parts[ 0 ]);
}
else
return null ;

转载于:https://www.cnblogs.com/suchenge/archive/2010/03/01/1675976.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值