在Web.config里面system.web节点下加入以下代码 设置Cookie名称 以及过期的时间
<authentication mode="Forms">
<forms name="Project.AUTH" protection="All" timeout="43200" path="/" requireSSL="false" slidingExpiration="true" />
</authentication>
public class AuthenticationDAL
{
public AuthenticationDAL()
{
}
/// <summary>
///TODO 获取当前客户UserId-AuthenticationDAL
/// </summary>
/// <returns></returns>
public virtual int GetCurrentUserId()
{
if (HttpContext.Current == null ||
HttpContext.Current.Request == null ||
!HttpContext.Current.Request.IsAuthenticated ||
!(HttpContext.Current.User.Identity is FormsIdentity))
{
return 0;
}
var formsIdentity = (FormsIdentity)HttpContext.Current.User.Identity;
var userId = GetAuthenticatedCustomerFromTicket(formsIdentity.Ticket);
return userId;
}
/// <summary>
/// 通过ticket中的userId 给出客户的信息
/// </summary>
/// <param name="ticket"></param>
/// <returns></returns>
public virtual int GetAuthenticatedCustomerFromTicket(FormsAuthenticationTicket ticket)
{
if (ticket == null)
throw new ArgumentNullException("ticket");
var userData = ticket.UserData;
var userId = 0;
int.TryParse(userData, out userId);
if (userId <= 0)
return 0;
return userId;
}
/// <summary>
/// TODO 设置登录-AuthenticationDAL
/// </summary>
/// <param name="user"></param>
/// <param name="createPersistentCookie">持久链接</param>
public virtual void SignIn(UserInfo user, bool createPersistentCookie)
{
var now = DateTime.Now.ToLocalTime();
var ticket = new FormsAuthenticationTicket(
1 /*version*/,
user.Id.ToString(),
now,
now.Add(FormsAuthentication.Timeout),
createPersistentCookie,
user.Id.ToString(),
FormsAuthentication.FormsCookiePath);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.HttpOnly = true;
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
cookie.Secure = FormsAuthentication.RequireSSL;
cookie.Path = FormsAuthentication.FormsCookiePath;
if (FormsAuthentication.CookieDomain != null)
cookie.Domain = FormsAuthentication.CookieDomain;
HttpContext.Current.Response.Cookies.Add(cookie);
}
public virtual void SignOut()
{
//TODO : 登出操作
FormsAuthentication.SignOut();
}
}