一、web.config设置
< 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 属性。 指定用于对数据进行解密的哈希算法的类型。 此属性可以为下列可能值之一。
此属性是 .NET Framework 2.0 版中的新属性。 默认值为 "Auto"。 | ||||||||||
decryptionKey | 必选的 String 属性。 指定用于对数据进行加密和解密的密钥或者生成该密钥的进程。当 validation 设置为 TripleDES 字段时,该属性用于 Forms 身份验证加密和解密以及视图状态加密。 如果向此属性添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。IsolateApps 也是默认值的一部分。 如果您需要在 Web 服务器网络(网络场)中支持配置,请手动设置此属性以确保配置保持一致。 此属性可以为下列可能值之一。
默认值为 "AutoGenerate,IsolateApps"。 | ||||||||||
validation | 必选的 MachineKeyValidation 属性。 指定用来验证数据的加密类型。 此属性可以为下列可能值之一。
默认值为 "SHA1"。 | ||||||||||
validationKey | 必选的 String 属性。 指定用于验证加密数据的密钥。当 enableViewStateMAC 为 true 时,validationKey 用于创建消息身份验证代码 (MAC),以确保视图状态未被篡改。validationKey 还可用于生成进程外、应用程序特定的会话 ID,以确保每个会话具有独立的会话状态变量。 如果向 ValidationKey 值添加 IsolateApps 修饰符,ASP.NET 将使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。IsolateApps 也是默认值的一部分。 如果您需要在 Web 服务器网络(网络场)中支持配置,请手动设置 ValidationKey 属性以确保配置保持一致。 validationKey 属性可以为下列可能值之一。
默认值为 "AutoGenerate,IsolateApps"。 |
二、记录用户信息
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
三、读取用户信息
{
string [] parts = HttpContext.Current.User.Identity.Name.Split( ' ; ' ); // 返回记录的用户信息
return Convert.ToInt32(parts[ 0 ]);
}
else
return null ;