/// <summary> /// 从token中获取用户 /// </summary> public BoneIdentity GetUserFromAccessToken(string token) { if (string.IsNullOrEmpty(token)) { throw new Exception("需要授权:Token不允许为空值"); } token = Guid.Parse(token).ToString("N").ToUpper(); string key = "AccessToken:" + token; int timeoutOfLogin = 480;// AppContext.Current.Settings().TimeoutOfLogin; BoneIdentity boneIdentity = null; //boneIdentity = CacheManager.MemoryCache.Get(key, null, 7200) as BoneIdentity; //if (boneIdentity == null) { var userFromToken = BoneAuthService.Proxy.GetUserFromToken(token); if (userFromToken == null) { throw new Exception(string.Format("登陆信息不正确,请重新登陆!可能是以下原因:\n1、非法或者伪造的登陆信息\n2、登陆信息已经过期({0}分钟)\n3、当前登陆信息已经在其他机器登陆", timeoutOfLogin)); } boneIdentity = new BoneIdentity { UserID = userFromToken.Id, UserName = userFromToken.CUserName, UserType = (UserType)userFromToken.CUserType, Password = userFromToken.CPassword, Department = userFromToken.CDepartment, DepartmentDesc = userFromToken.CDepartment, Session = userFromToken.CSessionId, OnlyOneClient = userFromToken.COnlyOneClient.IsTrue(), LoginIp = userFromToken.CLoginedIp, LoginMachine = userFromToken.CLoginedMachine, SessionUpdateTime = userFromToken.DSessionUpdateTime, LoginTime = userFromToken.DLoginedTime }; boneIdentity.SessionUpdateTime = new DateTime?(DateTime.Now); BoneAuthService.Proxy.UpdateUserSession(boneIdentity.UserID); //CacheManager.GetCache().Set(key, boneIdentity, 300); } //if (boneIdentity.OnlyOneClient) //{ // bool flag4 = boneIdentity.LoginIp != AppContext.Current.Request.UserClient.IpAddress && boneIdentity.LoginMachine != AppContext.Current.Request.UserClient.HostName; // if (flag4) // { // CacheManager.GetCache().Remove(key); // throw new AuthenticationException("该用户已经在其他地方进行独占式登陆,请与对方协商后重新登陆!"); // } //} return(boneIdentity); }
/// <summary> /// 从token中获取用户 /// </summary> public BoneIdentity GetUserFromAccessToken(string token) { if (string.IsNullOrEmpty(token)) { throw new Exception("需要授权:Token不允许为空值"); } token = Guid.Parse(token).ToString("N").ToUpper(); var userFromToken = BoneAuthService.Proxy.GetUserFromToken(token); if (userFromToken == null) { throw new Exception("登录信息不正确,请重新登录!可能是以下原因:\n1、非法或者伪造的登录信息\n2、登录信息已经过期\n3、当前登录用户已经在其他机器登录"); } var boneIdentity = new BoneIdentity(); //设置信息 boneIdentity.UserName = userFromToken.Id; boneIdentity.UserName = userFromToken.CUserName; boneIdentity.Company = userFromToken.CCompany; boneIdentity.Department = userFromToken.CDepartment; return(boneIdentity); }