Esempio n. 1
0
        /// <summary>
        /// 记录调用获取Access token接口
        /// </summary>
        /// <param name="reqTokenDto"></param>
        /// <param name="httpContext"></param>
        public async Task <ResModel <ResTokenDto> > GetToken(ReqTokenDto reqTokenDto, HttpContext httpContext)
        {
            ResModel <ResTokenDto> res   = new ResModel <ResTokenDto>();
            ResTokenDto            token = new ResTokenDto();
            string strConn = _unDbConnection.GetDbConnStr();

            using (IDbConnection conn = DapperHelper.GetOpenConnection(strConn, DbProvider.SqlServer))
            {
                IDbTransaction transaction = conn.BeginTransaction();
                try
                {
                    //记录接口调用
                    string ipStr  = httpContext.Connection.RemoteIpAddress.ToString();
                    string sqlstr = @" insert into INTERFACE_CALL_LOG(FUNCTION_NAME,FUNCTION_PARAM,Ip,CALL_DATE)
                            select 'GetToken ','ReqTokenDto;HttpContext',@ip,getdate()";
                    await conn.ExecuteAsync(sqlstr, new { ip = ipStr }, transaction);

                    transaction.Commit();
                    conn.Close();
                    res.success = "true";
                    return(res);
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    res.success       = "false";
                    res.resultMessage = "推送消息失败:" + ex.Message;
                    return(res);
                }
            }
        }
        public async Task <IActionResult> GetToken([FromForm] ReqTokenDto reqToken)
        {
            ResModel <ResTokenDto> res = new ResModel <ResTokenDto>();

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            HttpContext context = _httpContextAccessor.HttpContext;

            IActionResult response = Unauthorized();
            //var user = AuthenticateUser(login);


            ResTokenDto token = new ResTokenDto();

            try
            {
                //验证客户端应用唯一编号,调用时采用MD5加密传输

                //var crpid = DesHelper.Decrypt(reqToken.corp_id);
                if (_configuration["Jwt:client_id"] != reqToken.client_id || _configuration["Jwt:client_secret"] != reqToken.client_secret ||
                    Md5Helper.Get32MD5One(_configuration["Jwt:corp_id"]).ToLower() != reqToken.corp_id)
                {
                    res.success       = "false";
                    res.resultMessage = "无权限访问!";
                }
                else
                {
                    if (reqToken.response_type == "token")
                    {
                        //记录调用获取Access token接口
                        res = await _iunion.GetToken(reqToken, context);

                        if (res.success == "true")
                        {
                            var tokenString = GenerateJSONWebToken(reqToken);
                            token = new ResTokenDto {
                                access_token = tokenString, time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), expire_in = DateTime.Now.AddHours(24).ToString("yyyy-MM-dd HH:mm:ss"), state = reqToken.state
                            };
                            res.success = "true";
                            res.result  = token;
                        }
                    }
                    else
                    {
                        res.success       = "false";
                        res.resultMessage = "无权限访问!";
                    }
                }

                response = Ok(res);
            }
            catch (Exception ex)
            {
                return(Ok(res.GetRes("false", ex.Message, null)));
            }
            return(response);
        }