/// <summary> /// 注册用户获取访问令牌接口 /// </summary> /// <param name="username">用户登录名称</param> /// <param name="password">用户密码</param> /// <param name="signature">加密签名字符串</param> /// <param name="timestamp">时间戳</param> /// <param name="nonce">随机数</param> /// <param name="appid">应用接入ID</param> /// <returns></returns> public TokenResult GetAccessToken(string username, string password, string signature, string timestamp, string nonce, string appid) { TokenResult token = new TokenResult(); try { //先校验介入应用的数据完整性 CheckResult checkResult = ValidateSignature(signature, timestamp, nonce, appid);//检查用户签名 if (checkResult.Success) { #region 检查用户身份 //检验数据完整性后,从数据库检查用户身份 CommonResult result = VerifyUser.VerifyUserPwd(username, password);//验证用户身份 if (result.Success) { //用户ID string userId = result.UserId; string userName = result.UserName; int times = DateTimeHelper.DateTimeToStamp(DateTime.UtcNow); int expTimes = DateTimeHelper.DateTimeToStamp(DateTime.UtcNow.AddDays(_expiredDays)); var payload = new Dictionary <string, object>() { { "iss", _iss }, //该JWT的签发者 { "sub", userId }, //该JWT所面向的用户 { "aud", userName }, //接收该JWT的一方 { "iat", times }, //什么时候签发 { "exp", expTimes }//什么时候过期 }; //生成具体的Token和过期时间 生成JWT令牌 token.AccessToken = JsonWebToken.Encode(payload, _sharedKey, JwtHashAlgorithm.Hs256); token.ExpiresIn = _expiredDays * 24 * 3600;//过期时间 token.Success = true; token.UserId = userId; token.Errmsg = "生成令牌,过期时间为" + expTimes; //LogHelper.WriteLog("在"+ DateTime.UtcNow.ToString("yyyy-MMM-dd ss")+"生成" + userName+"令牌"); } #endregion } else { token.Errmsg = checkResult.Errmsg; token.Success = checkResult.Success; } } catch (Exception ex) { Exception objExp = ex; //LogHelper.WriteLog("操作注册用户获取访问令牌接口", objExp); } return(token); }