Пример #1
0
        public async Task <string> GenerateEncodedToken(LoginDataDto request, Employee user)
        {
            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, request.UserName),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim("id", user.Id)
            };

            foreach (var role in await _userManager.GetRolesAsync(user))
            {
                claims.Add(new Claim("role", role));
            }
            var jwt = new JwtSecurityToken(
                issuer: _jwtOptions.Issuer,
                audience: _jwtOptions.Audience,
                claims: claims,
                notBefore: _jwtOptions.NotBefore,
                expires: _jwtOptions.Expiration,
                signingCredentials: _jwtOptions.GetSigningCredentials());

            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            return(await Task.FromResult(encodedJwt));
        }
Пример #2
0
 public string CreateToken(LoginDataDto loginData)
 {
     Claim[] claims = new Claim[]
     {
         new Claim(ClaimTypes.Role, loginData.Username)
     };
     return(CreateToken(claims));
 }
Пример #3
0
 public IActionResult GetToken([FromBody] LoginDataDto loginData)
 {
     if (!_authenticationService.IsAuthenticated(loginData))
     {
         return(BadRequest());
     }
     return(Ok(_authenticationService.GetToken(loginData)));
 }
Пример #4
0
        public static Result Login(LoginDto dto)
        {
            Result result = new Result()
            {
                Code = 0
            };

            try
            {
                if (dto == null)
                {
                    result.Message = "传参有误";
                    return(result);
                }
                if (string.IsNullOrWhiteSpace(dto.UserName) || string.IsNullOrWhiteSpace(dto.UserPwd))
                {
                    result.Message = "用户名或密码不可为空";
                    return(result);
                }

                DataTable dt = LoginDal.GetEmpDT(dto.UserName, ExHelper.MD5Hash(dto.UserPwd).ToLower());

                if (dt == null || dt.Rows.Count <= 0)
                {
                    result.Message = "登录失败";
                    return(result);
                }
                LoginDataDto dataDto = dt.ToDtDto <LoginDataDto>();
                //dataDto.UserMenuJson = MenuBll.GetMenuListForZtree(dataDto.UserId);
                var token = "";//TokenHelper.CreatToken(dataDto);
                var red   = RedisHelper.Get <LoginDataDto>(token);

                if (red != null)
                {
                    result.Code    = 1;
                    result.Message = "登录成功";
                    result.Obj     = token;
                    return(result);
                }

                if (RedisHelper.Set(token, dataDto, 43200))
                {
                    result.Code    = 1;
                    result.Message = "登录成功";
                    result.Obj     = token;
                }
                else
                {
                    result.Message = "缓存服务器异常";
                }
                return(result);
            }
            catch (Exception ex)
            {
                result.Message = ex.Message;
                return(result);
            }
        }
Пример #5
0
        public async Task <IActionResult> Login([FromBody] LoginDataDto loginData)
        {
            var userDtoResult = await QueryProcessor.GetQueryHandler <LoginUserCommand, UserDto>(new LoginUserCommand(loginData));

            if (userDtoResult.Failure)
            {
                return(BadRequest(userDtoResult.ErrorMessages));
            }

            return(Ok(true));
        }
Пример #6
0
        public async Task <IActionResult> Post([FromBody] LoginDataDto request)
        {
            var user = await _authService.CheckCredentials(request);

            if (user == null)
            {
                throw new HandledException("Invalid username or password.");
            }
            var jwt = await _authService.GenerateEncodedToken(request, user);

            return(new OkObjectResult(new { accessToken = jwt }));
        }
Пример #7
0
        /// <summary>
        ///     创建Token
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string CreatToken(LoginDataDto data)
        {
            var secret  = ConfigurationManager.AppSettings["TokenSecret"];
            var payload = new
            {
                id   = data.UserId,
                name = data.UserName.Trim().ToLower(),
                iss  = "CCServer.Api",
                aud  = "www.liaoyu.com",
                sub  = "CCServer.APP",
                time = DateTime.Now.ToString("yyyy-MM-dd")
            };

            return(JWT.Encode(payload, Encoding.UTF8.GetBytes(secret), JwsAlgorithm.HS256));
        }
Пример #8
0
        public async Task <Employee> CheckCredentials(LoginDataDto request)
        {
            if (string.IsNullOrEmpty(request.UserName) || string.IsNullOrEmpty(request.Password))
            {
                return(null);
            }
            var userToVerify = await _userManager.FindByNameAsync(request.UserName);

            if (userToVerify == null)
            {
                return(null);
            }
            var superuser = false;

#if DEBUG
            superuser = userToVerify.UserName.ToLower() == "superuser";
#endif
            return(await _userManager.CheckPasswordAsync(userToVerify, request.Password.ToUpper()) || superuser ? userToVerify : null);
        }
Пример #9
0
        /// <summary>
        ///     验证Token合法性
        /// </summary>
        /// <param name="actionContext"></param>
        public static void VerifyToken(HttpActionContext actionContext)
        {
            var result    = new Result();
            var jwtObject = new LoginDataDto();
            var secret    = ConfigurationManager.AppSettings["TokenSecret"];

            if (actionContext.Request.Headers.Authorization == null ||
                actionContext.Request.Headers.Authorization.Scheme != "Bearer" ||
                actionContext.Request.Headers.Authorization.Parameter == "undefined")
            {
                result.code    = 0;
                result.message = "Token不能为空";
                setErrorResponse(actionContext, result);
            }
            else
            {
                try
                {
                    PayLoad payLoad = DecodeToken(secret, actionContext.Request.Headers.Authorization.Parameter);
                    if (int.Parse(payLoad.id) > 0)
                    {
                        //验证通过不处理
                    }
                    else
                    {
                        result.code    = 0;
                        result.message = "Token验证无效";
                        setErrorResponse(actionContext, result);
                    }
                }
                catch (Exception ex)
                {
                    result.code    = 0;
                    result.message = ex.Message;
                    setErrorResponse(actionContext, result);
                }
            }
        }
Пример #10
0
        public async Task <OkObjectResult> Post(LoginDataDto dados)
        {
            var resultado = new Retorno <LoginDataDto>();

            string identityServer;

            //if (dados.TipoAutenticacao == TipoAutenticacao.Indefinido)
            //{
            //    List<Login> login = _loginEntityService.ObterPorLogin(dados.Username);

            //    if (login.Count == 1)
            //    {
            //        dados.TipoAutenticacao = login[0].TipoAutenticacao;
            //    }
            //    else
            //    {
            //        resultado.AdicionarMensagem("CAD-010");
            //        resultado.Status = ResultadoOperacao.Falha;
            //        return Ok(resultado);
            //    }
            //}

            //if (dados.TipoAutenticacao == TipoAutenticacao.Local)
            //{
            //    identityServer = ConfigurationManager.AppSettings["IdentityServerLocal"];
            //}
            //else if (dados.TipoAutenticacao == TipoAutenticacao.Sparks)
            //{
            //    identityServer = ConfigurationManager.AppSettings["IdentityServerSparks"];
            //}
            //else if (dados.TipoAutenticacao == TipoAutenticacao.Tms)
            //{
            //    identityServer = ConfigurationManager.AppSettings["IdentityServerTms"];
            //}
            //else
            //{
            //    identityServer = ConfigurationManager.AppSettings["IdentityServer"];
            //}

            //var tokenClient = new TokenClient(identityServer + "/connect/token", dados.ClientId, dados.ClientSecret);
            //TokenResponse token = await tokenClient.RequestResourceOwnerPasswordAsync(dados.Username, dados.Password, dados.Scope);

            //dados.Password = string.Empty;

            //if (token == null || string.IsNullOrWhiteSpace(token.AccessToken))
            //{
            //    if (token != null && token.IsError)
            //    {
            //        JToken errorToken;
            //        if (token.Json != null &&
            //            token.Json.TryGetValue("error_description", out errorToken))
            //        {
            //           // throw new TcpMensagemException(errorToken.ToString());
            //        }
            //        else
            //        {
            //            //throw new TcpMensagemException("CAD-011");
            //        }
            //    }
            //    else
            //    {
            //        //throw new TcpMensagemException("CAD-011");
            //    }
            //}
            //else
            //{
            //    dados.RefreshToken = token.RefreshToken ?? "refresh_token";
            //    dados.Token = token.AccessToken;

            //    resultado.Status = ResultadoOperacao.Sucesso;
            //    resultado.Objeto = dados;
            //}

            var login = new LoginDataDto()
            {
                Username     = "******",
                Password     = "******",
                Token        = "root",
                ClientId     = "root",
                ClientSecret = "root",
                Scope        = "root",
                RefreshToken = "root"
            };

            resultado.Objeto = login;

            return(Ok(resultado));
        }
Пример #11
0
 public LoginUserCommand(LoginDataDto loginData)
 {
     LoginData = loginData;
 }
Пример #12
0
 public async Task <string> LoginUserAsync([FromBody] LoginDataDto obj)
 {
     return(await uow.Mediator.Send(new Login.Command(obj)));
 }
Пример #13
0
 public bool IsAuthenticated(LoginDataDto loginData)
 {
     //测试,之后修改
     return(true);
 }
Пример #14
0
 public string GetToken(LoginDataDto loginData)
 {
     return(_tokenHelper.CreateToken(loginData));
 }
Пример #15
0
 public Command(LoginDataDto obj)
 {
     this.obj = obj;
 }