Example #1
0
        /// <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);
        }