public void UpdateAccessToken(MAccessToken user) { BeginDb(DAL => { DAL.UpdateAccessToken(user); }); }
/// <summary> /// 通过appID和appsecret获取Access_token /// </summary> /// <returns></returns> private static MAccessToken GetAccesstokenFromWX() { try { //// 微信API地址 string wxAPIURL = WebConfigeOpert.GetWXAPIURL(); //// 微信平台的APPID string appid = WebConfigeOpert.GetWXappid(); //// 微信平台的密码 string secret = WebConfigeOpert.GetWXAppSecret(); string strUrl = wxAPIURL + "cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; MAccessToken mode = PublicTools.HttpGetRequest <MAccessToken>(strUrl); LogOpert.AddWeiXinMessage("获取wxAccesstoken结果:" + mode.access_token); return(mode); } catch (Exception ex) { LogOpert.AddWeiXinMessage("获取wxAccesstoken异常:" + ex); } return(null); }
/// <summary> /// 用户认证 /// </summary> /// <param name="context"></param> /// <returns></returns> public AuthResult AuthUser(HttpContext context) { Endpoint endpoint = context.GetEndpoint(); // 检查请求接口标注的特性 bool isPersona = endpoint?.Metadata.GetMetadata <PersonaAttribute>() != null; bool isUser = endpoint?.Metadata.GetMetadata <UserAttribute>() != null; string token = context.Request.Headers["srlab_token"]; if (!isPersona && !isUser) { return(AuthResult.DontNeed); } if (string.IsNullOrWhiteSpace(token)) { if (isUser) { return(AuthResult.AuthFail); } else { return(AuthResult.DontNeed); } } // 获取当前用户信息 UserBLL loginBLL = context.RequestServices.GetService <UserBLL>(); MAccessToken user = loginBLL.GetUserByToken(token); if (string.IsNullOrWhiteSpace(user?.PlatformID)) { if (isUser) { return(AuthResult.AuthFail); } else { return(AuthResult.DontNeed); } } // 给当前用户信息Service赋值 MUser currentUser = context.RequestServices.GetService <MUser>(); string browser = context.Request?.Headers?["User-Agent"]; currentUser.Browser = browser ?? "未知设备"; currentUser.TokenID = user.TokenID; currentUser.Token = user.Token; currentUser.PlatformID = user.PlatformID; currentUser.LoginDate = user.LoginDate; return(AuthResult.AuthSuccess); }
/// <summary> /// 获取token值 /// </summary> /// <returns></returns> public static string GetAccessToken() { //// 实现步骤 //// 1、首先判断AccessToken是否有值 //// 2、如果没有值,那么直接获取token //// 2、如果有值,那么在判断是否过期 //// 3、如果过期,那么重新获取token AccessToken = GetAccesstokenFromWX(); //// if (AccessToken == null || //// string.IsNullOrEmpty(AccessToken.access_token) || //// AccessToken.ExpiresDateTime < System.DateTime.Now) //// { //// AccessToken = GetAccesstokenFromWX(); //// } return(AccessToken.access_token); }
public MAccessToken GetUserByToken(string token) { return(BeginDb(DAL => { MAccessToken user = DAL.GetUserByToken(token); if (token.Equals(user?.ExToken)) { DateTime create = Convert.ToDateTime(user.Token.Split("&")[1]); int expire = Convert.ToInt32(AppSettings.GetConfig("Refresh")) - 1; if (DateTime.Now - create > TimeSpan.FromMinutes(expire)) { return null; } } return user; })); }
/// <summary> /// 刷新AccessToken /// </summary> /// <param name="token"></param> /// <returns></returns> private string RefreshToken() { DateTime create = Convert.ToDateTime(_currentUser.Token.Split("&")[1]); int refresh = Convert.ToInt32(AppSettings.GetConfig("Refresh")); if (DateTime.Now - create > TimeSpan.FromMinutes(refresh)) { // 过期则生成新的Token string newToken = CommonUtils.CreateToken(); MAccessToken param = new MAccessToken { TokenID = _currentUser.TokenID, PlatformID = _currentUser.PlatformID, Browser = _currentUser.Browser, Token = newToken, ExToken = _currentUser.Token, LoginDate = _currentUser.LoginDate }; _loginBLL.UpdateAccessToken(param); return(newToken); } return(_currentUser.Token); }
public void UpdateAccessToken(MAccessToken user) { Db.Execute($"UPDATE AccessToken SET Token = @{nameof(user.Token)}, ExToken = @{nameof(user.ExToken)}, Browser = @{nameof(user.Browser)} WHERE TokenID = @{nameof(user.TokenID)} AND PlatformID = @{nameof(user.PlatformID)}", user); }