单点登陆 (二)
HttpContext.Current.User.Identity.IsAuthenticated;
}
///
/// 登出
///
///
public static bool LogOut()
{
try
{
//System.Web.Security.FormsAuthentication.SignOut();
CookieExt.ClearCookie(CookieName);
CookieExt.ClearCookie(messageCookieName);
CookieExt.ClearCookie(cartCookieName);
//清除登陆时间
CookieExt.ClearCookie(LoginTimeCookie);
HttpContext.Current.Session.Remove(LoginTimeCookie);
//提现密码
CookieExt.ClearCookie("_CN100_DRACA_");
//提现错误次数
CookieExt.ClearCookie("_CN100_DRACOUNT_");
//移除子帐号菜单权限
if (HttpContext.Current.Session[MenuSessionName] != null)
{
HttpContext.Current.Session.Remove(MenuSessionName);
}
return true;
}
catch
{
return false;
}
}
///
///
///
public static object @Lock = new object();
///
/// 获取当前用户信息
///
public static LoginResult UserInfo
{
get
{
CurrentUser user = new CurrentUser();
return user.GetUserInfo();
}
}
///
/// 获取用户信息
///
///
public LoginResult GetUserInfo()
{
lock (@Lock)
{
LoginResult result = new LoginResult();
if (IsLogin())
{
string UserData = CookieExt.GetCookieva lueByName(CookieName);
if (!string.IsNullOrEmpty(UserData))
{
try
{
string decryptString = DecryptDES(UserData, configPassword);
result = (LoginResult)JsonConvert.DeserializeObject(decryptString, typeof(LoginResult));
DateTime loginTime = GetLoginTime();
//延长cookie时间
// ExtendCookieTime(UserData);
if (loginTime.AddMinutes(ExpireMinutes) < DateTime.Now)
{
LogOutToLoginPage();
return new LoginResult();
}
else
{
//延长登陆时间
ExtendCookieTime();
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
RedirectToLoginPage();
}
}
}
return result;
}
}
///
/// 延长用户cookie时间
///
public static void ExtendCookieTime()
{
//try
//{
// if (HttpContext.Current.Session[LoginTimeCookie] != null)
// {
// DateTime time = Convert.ToDateTime(HttpContext.Current.Session[LoginTimeCookie]);
// if (time.AddMinutes(1) < DateTime.Now)
// {
// HttpContext.Current.Session[LoginTimeCookie] = DateTime.Now;
// CookieExt.SetCookie(LoginTimeCookie, DateTime.Now.ToString());
// }
// }
// else
// {
// HttpContext.Current.Session[LoginTimeCookie] = DateTime.Now;
// CookieExt.SetCookie(LoginTimeCookie, DateTime.Now.ToString());
// }
//}
//catch (Exception ex)
//{
// Log.WriteLog(ex);
// CookieExt.SetCookie(LoginTimeCookie, DateTime.Now.ToString());
//}
CookieExt.SetCookie(LoginTimeCookie, DateTime.Now.ToString());
}
///
/// 获取上次登陆时间
///
///
private static DateTime GetLoginTime()
{
if (CookieExt.GetCookie(LoginTimeCookie) != null)
{
DateTime loginTime = DateTime.Now;
if (DateTime.TryParse(CookieExt.GetCookieva lueByName(LoginTimeCookie), out loginTime))
{
return loginTime;
}
}
return DateTime.Now;
}
///
/// 登出返回登陆页面
///
public static void LogOutToLoginPage()
{
//System.Web.Security.FormsAuthentication.SignOut();
LogOut();
string url = GetReturnUrl();
HttpContext.Current.Response.Redirect(FormsAuthentication.LoginUrl + " ReturnUrl=" + url);
}
///
/// 登出并跳转到默认页面
///
public static void LogOutToDefaultPage()
{
LogOut();
HttpContext.Current.Response.Redirect(FormsAuthentication.DefaultUrl);
}
///
/// 转到登陆页面
///
public static void RedirectToLoginPage()
{
string url = GetReturnUrl();
HttpContext.Current.Response.Redirect(FormsAuthentication.LoginUrl + " ReturnUrl=" + url);
}
///
/// 转到默认页面
///
public static void RedirectToDefaultPage()
{
HttpContext.Current.Response.Redirect(FormsAuthentication.DefaultUrl);
}
///
/// 用户名,如果是子帐号登陆,用父帐户名
///
public static string UserName
{
get
{
if (IsLogin())
{
//return HttpContext.Current.User.Identity.Name;
return UserInfo.UserName;
}
return null;
}
}
///
/// 保存用户信息到cookie
///
///
public static void SaveUserCookie(LoginResult result)
{
//string userData = JsonConvert.SerializeObject(result);
//FormsAuthenticationTicket tic