public
bool
ValidateUser(LoginVO model)
{
string
encodePassword = MD5(model.PassWord);
string
sql =
"select * from User_Users where (UserName=@UserName or JobNumber=@JobNumber) and PassWord=@PassWord"
;
var
user = Context.Data.Query<UsersPO>(sql,
new
{UserName = model.LoginName, JobNumber = model.LoginName, PassWord = encodePassword}).SingleOrDefault();
if
(user ==
null
)
return
false
;
DateTime expiration = model.IsRememberLogin
? DateTime.Now.AddDays(14)
: DateTime.Now.Add(FormsAuthentication.Timeout);
var
ticket=
new
FormsAuthenticationTicket(
1,
user.UserName,
DateTime.Now,
expiration,
true
,
user.UserId.ToString(),
FormsAuthentication.FormsCookiePath
);
var
encryptedTicket = FormsAuthentication.Encrypt(ticket);
if
(HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName] !=
null
)
{
HttpContext.Current.Request.Cookies.Remove(FormsAuthentication.FormsCookieName);
}
var
loginIdentify=
new
HttpCookie(FormsAuthentication.FormsCookieName);
if
(model.IsRememberLogin)
{
loginIdentify.Expires = DateTime.Now.AddDays(7);
}
loginIdentify.Value = encryptedTicket;
HttpContext.Current.Response.AppendCookie(loginIdentify);
return
true
;
}
/// <summary>
/// 加密
/// </summary>
/// <param name="str"></param>
/// <param name="encoding"></param>
/// <param name="toUpper"></param>
/// <param name="isReverse"></param>
/// <param name="count"></param>
/// <returns></returns>
private
string
MD5(
string
str, Encoding encoding=
null
,
int
count = 1)
{
if
(encoding ==
null
)
{
encoding = Encoding.Default;
}
var
bytes =
new
MD5CryptoServiceProvider().ComputeHash(encoding.GetBytes(str));
var
md5 =
string
.Empty;
for
(
int
i = 0; i < bytes.Length; i++)
{
md5 += bytes[i].ToString(
"x"
).PadLeft(2,
'0'
);
}
if
(count <= 1) {
return
md5; }
return
MD5(md5, encoding, --count);
}