webconfig 配置
<authentication mode="Forms">
<forms name="forums" path="/" loginUrl="Login.aspx" protection="All" timeout="40">
</forms>
</authentication>
用户登录
/// <summary>
/// 用户登陆
/// </summary>
/// <param name="username">用户名</param>
/// <param name="roles">权限</param>
/// <param name="isPersistent">输入true时,Cookies存在的时间是一个月!输入false时,Cookies存在时间是一小时</param>
public static void Login(string username, string roles, bool isPersistent)
{
DateTime dt = isPersistent ? DateTime.Now.AddDays(30) : DateTime.Now.AddMinutes(60);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // 票据版本号
username, // 票据持有者
DateTime.Now, //分配票据的时间
dt, // 失效时间
isPersistent, // 需要用户的 cookie
roles, // 用户数据,这里其实就是用户的角色
FormsAuthentication.FormsCookiePath);//cookie有效路径
//使用机器码machine key加密cookie,为了安全传送
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); //加密之后的cookie
//将cookie的失效时间设置为和票据tikets的失效时间一致
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
//添加cookie到页面请求响应中
HttpContext.Current.Response.Cookies.Add(cookie);
}
本文详细阐述了网站用户登录的实现过程,包括使用Forms认证模式进行身份验证,并通过FormsAuthentication票证系统来管理和存储用户会话信息。文章进一步解释了如何根据用户输入设置会话的持久性和过期时间,以及如何将生成的加密cookie添加到HTTP响应中以实现实时的身份验证和会话管理。
1043

被折叠的 条评论
为什么被折叠?



