コード例 #1
0
#pragma warning disable 1998
        protected override async Task <AuthenticateResult> HandleAuthenticateAsync()
#pragma warning restore 1998
        {
            try
            {
                var  authorizationString = this.Request.Headers["Authorization"].ToString();
                Guid userId = Guid.Empty;

                //Сделать хранение тикета в куках и его восстановление. Пока проверяется при каждом запросе и только при наличии хедера авторизации
                if (!string.IsNullOrEmpty(authorizationString))
                {
                    var split       = authorizationString.Split(" ");
                    var token       = split.Length > 1 ? split[1] : split[0];
                    var credentials = JWTService.DecodeUserToken(token);
                    userId = Guid.Parse(credentials.Userid);
                }

                var identity = new UserIdentity
                {
                    UserId = userId
                };

                var principal = new GenericPrincipal(identity, null);
                var ticket    = new AuthenticationTicket(principal, this.Scheme.Name);

                return(AuthenticateResult.Success(ticket));
            }
            catch (Exception exception)
            {
                throw new AuthenticationException($"Аутентификация прошла с ошибкой: {exception}");
            }
        }
コード例 #2
0
        public void CheckToken()
        {
            var token = JWTService.GenerateUserToken(Login, Password, UserId.ToString());

            var obj = JWTService.DecodeUserToken(token);

            Assert.AreEqual(obj.Login, Login);
            Assert.AreEqual(obj.Password, Password);
            Assert.AreEqual(obj.Userid, this.UserId.ToString());
        }