单点登陆 (三)
ket = new FormsAuthenticationTicket(1,
// result.UserName,
// DateTime.Now,
// DateTime.Now.AddMinutes(30), // value of time out property
// true, // Value of IsPersistent property
// userData,
// FormsAuthentication.FormsCookiePath);
//string encryptedTicket = FormsAuthentication.Encrypt(ticket);
//HttpCookie authCookie = new HttpCookie(CookieName, encryptedTicket);
//HttpCookie authCookie = new HttpCookie(CookieName, encryptedTicket);
//authCookie.Domain = FormsAuthentication.CookieDomain;
//authCookie.Path = FormsAuthentication.FormsCookiePath;
//authCookie.Expires = DateTime.Now.AddMinutes(30);
//HttpCookie authCookie = new HttpCookie(CookieName, encryptedTicket);
//authCookie.Domain = FormsAuthentication.CookieDomain;
//authCookie.Path = FormsAuthentication.FormsCookiePath;
//authCookie.Expires = DateTime.Now.AddMinutes(30);
//if (HttpContext.Current.Request.Cookies[CookieName] != null)
//{
// HttpContext.Current.Response.Cookies.Set(authCookie);
//}
//else
//{
// HttpContext.Current.Response.Cookies.Add(authCookie);
//}
result.LoginTime = DateTime.Now;
string encryptedTicket = DeserializeUserData(result);
CookieExt.SetCookie(CookieName, encryptedTicket); //, DateTime.Now.AddMinutes(ExpireMinutes)
//清除购物与信息缓存
CookieExt.ClearCookie(cartCookieName);
CookieExt.ClearCookie(messageCookieName);
//保存登陆时间
ExtendCookieTime();
//移除子帐号菜单权限
if (HttpContext.Current.Session[MenuSessionName] != null)
{
HttpContext.Current.Session.Remove(MenuSessionName);
}
}
///
/// 序列化用户信息
///
///
///
public static string DeserializeUserData(LoginResult result)
{
string userData = JsonConvert.SerializeObject(result);
string encryptedTicket = EncryptDES(userData, configPassword);
return encryptedTicket;
}
///
/// 获取当前用户信息
///
///
public static LoginResult GetCurrentUserInfo()
{
lock (@Lock)
{
CurrentUser user = new CurrentUser();
return user.GetUserInfo();
}
}
///
/// 获取
///
///
public static string GetReturnUrl()
{
string hosts = HttpContext.Current.Request.Headers["host"];
if (string.IsNullOrEmpty(hosts))
{
hosts = HttpContext.Current.Request.Url.Host;
}
string pageUrl = HttpContext.Current.Request.Url.PathAndQuery;
return HttpUtility.UrlEncode("http://" + hosts + pageUrl);
}
///
/// 根据用户,判断是否具有菜单ID权限
///
///
///
///
public static bool HasMenuIDBySubAccountID(long menuID, long subAccountID)
{
try
{
using (WcfTcpClient client = WcfClients.Member.CreateClient())
{
return client.Channel.HasMenuIDBySubAccountID(subAccountID, menuID);
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
return false;
}
}
///
/// 当前用户是否具有菜单权限
///
/// 菜单ID
///
public static bool HasMenuID(long menuID)
{
if (UserInfo == null) return false;
return HasMenuIDBySubAccountID(menuID, UserInfo.SubAccountID);
}
///
/// 根据用户名,获取有权限的菜单ID
///
/// 子帐号ID
///
public static long[] GetMenuIDesBySubAccountID(long subAccountID)
{
try
{
using (WcfTcpClient client = WcfClients.Member.CreateClient())
{
return client.Channel.GetMenuIDesBySubAccountID(subAccountID);
}
}
catch (Exception ex)
{
Log.WriteLog(ex);
return new long[] { };