private static TokenModel CreateToken(IAuthIdentity user) { var dic = user.GetTokenData(); dic.Add("auth_id", user.GetId()); dic.Add("auth_name", user.GetName()); dic.Add("auth_roles", user.GetRoles()); dic.Add("auth_flag", "token"); dic.Add("expires_in", Common.Timestamp.GetUTCTimestamp()); string token = JWT.JsonWebToken.Encode(dic, SECRETKEY, JWT.JwtHashAlgorithm.HS256); Dictionary <string, object> refreshdic = new Dictionary <string, object>(); refreshdic.Add("auth_id", user.GetId()); refreshdic.Add("auth_flag", "refresh"); refreshdic.Add("expires_in", Common.Timestamp.GetUTCTimestamp()); TokenModel tm = new TokenModel(); tm.Token = JWT.JsonWebToken.Encode(dic, SECRETKEY, JWT.JwtHashAlgorithm.HS256); tm.RefreshToken = JWT.JsonWebToken.Encode(refreshdic, SECRETKEY, JWT.JwtHashAlgorithm.HS256); tm.Expires = EXPIRES_IN; tm.Id = user.GetId(); return(tm); }
public override IAuthIdentity Login(LoginParam param) { try { IAuthIdentity user = null; if (!string.IsNullOrEmpty(param.RefreshToken)) { UserAuth.GetToken(param.RefreshToken, (userid) => { user = new Identity(dataAccess.Find <Account>(Guid.Parse(userid))); return(user); }); return(user); } user = base.Login(param); return(user); } catch (Exception ex) { Common.LogHelper.WriteLog(this.GetType(), ex); throw ex; } }
/// <summary> /// 保存cookie /// </summary> /// <param name="user"></param> /// <param name="token"></param> protected void SaveCookie(IAuthIdentity user, TokenModel token) { Data.Models.Account account = user.GetUser() as Data.Models.Account; //添加token到 HttpCookie cookie = new HttpCookie("token", token.Token); cookie.Expires = DateTime.Now.AddHours(2); HttpContext.Current.Response.Cookies.Add(cookie); //添加refreshToken和token的失效时间,失效时间为100分钟 DateTime validDatetime = DateTime.UtcNow.AddMinutes(100); var refresh = new { refreshToken = token.RefreshToken, vaildTime = Common.Timestamp.GetTimestamp(validDatetime).ToString(), userId = account.Id, userType = account.Type }; HttpCookie refreshcookie = new HttpCookie("refresh", JsonHelper.Serialize(refresh)); refreshcookie.Expires = DateTime.Now.AddHours(2); HttpContext.Current.Response.Cookies.Add(refreshcookie); }
public static TokenModel GetToken(IAuthIdentity user) { return(CreateToken(user)); }
/// <summary> /// 保存cookie /// </summary> /// <param name="user"></param> protected void SaveCookie(IAuthIdentity user) { TokenModel token = UserAuth.GetToken(user); SaveCookie(user, token); }