Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- //Вначале устанавливаем две глобальные переменные для адреса сайта и токена:
- private const string APP_PATH = "http://localhost:5965";
- //private const string APP_PATH = "http://localhost:7331";
- private static string token;
- static void Main(string[] args)
- {
- //После ввода emailа и пароля вывызвается метод Register(), который отправляет регистрационные данные по маршруту /api/Account/Register
- //Console.WriteLine("Введите логин:");
- //string userName = Console.ReadLine();
- //Console.WriteLine("Введите пароль:");
- //string password = Console.ReadLine();
- ////
- string userName = "test1@a.a";
- //string password = "Aa0000#";
- string password = "Aa0000#";
- ////
- //var registerResult = Register(userName, password);
- //Console.WriteLine("Статусный код регистрации: {0}", registerResult);
- //Зарегистрировавшись, мы можем получить токен с помощью метода GetTokenDictionary(). Так как возвращаемый сервером объект представляет набор ключей и значений в формате json, то его можно преобразовать к словарь Dictionary, а из него по ключу получить сам токен:
- Dictionary<string, string> tokenDictionary = GetTokenDictionary(userName, password);
- token = tokenDictionary["access_token"];
- Console.WriteLine();
- Console.WriteLine("Access Token:");
- Console.WriteLine(token);
- Console.WriteLine();
- string userInfo = GetUserInfo(token);
- Console.WriteLine("Пользователь:");
- Console.WriteLine(userInfo);
- Console.WriteLine();
- string values = GetValues(token);
- Console.WriteLine("Values:");
- Console.WriteLine(values);
- Console.Read();
- }
- // регистрация
- static string Register(string email, string password)
- {
- var registerModel = new
- {
- Email = email,
- Password = password,
- ConfirmPassword = password
- };
- using (var client = new HttpClient())
- {
- var response = client.PostAsJsonAsync(APP_PATH + "/api/Account/Register", registerModel).Result;
- return response.StatusCode.ToString();
- }
- }
- // получение токена
- //Получив токен, уже можно отправлять запросы к любым защищенным ресурсам.Например, далее отправляется запрос по маршруту /api/Account/UserInfo для получения данных о пользователе.И также отправляется запрос к методу Get контроллера ValuesController.
- static Dictionary<string, string> GetTokenDictionary(string userName, string password)
- {
- var pairs = new List<KeyValuePair<string, string>>
- {
- new KeyValuePair<string, string>( "grant_type", "password" ),
- new KeyValuePair<string, string>( "username", userName ),
- new KeyValuePair<string, string> ( "Password", password )
- };
- var content = new FormUrlEncodedContent(pairs);
- using (var client = new HttpClient())
- {
- var response =
- client.PostAsync(APP_PATH + "/Token", content).Result;
- var result = response.Content.ReadAsStringAsync().Result;
- // Десериализация полученного JSON-объекта
- Dictionary<string, string> tokenDictionary =
- JsonConvert.DeserializeObject<Dictionary<string, string>>(result);
- return tokenDictionary;
- }
- }
- // создаем http-клиента с токеном
- //Для отправки запросов к серверу во всех методах используется класс HttpClient.
- //Для упрощения запросов с токеном создан вспомогательный метод CreateClient(), который устанавливает токен в заголовках авторизации и возвращает объект HttpClient.
- static HttpClient CreateClient(string accessToken = "")
- {
- var client = new HttpClient();
- if (!string.IsNullOrWhiteSpace(accessToken))
- {
- client.DefaultRequestHeaders.Authorization =
- new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
- }
- return client;
- }
- // получаем информацию о клиенте
- static string GetUserInfo(string token)
- {
- using (var client = CreateClient(token))
- {
- var response = client.GetAsync(APP_PATH + "/api/Account/UserInfo").Result;
- return response.Content.ReadAsStringAsync().Result;
- }
- }
- // обращаемся по маршруту api/values
- static string GetValues(string token)
- {
- using (var client = CreateClient(token))
- {
- var response = client.GetAsync(APP_PATH + "/api/values").Result;
- return response.Content.ReadAsStringAsync().Result;
- }
- }
- }
- HTTP Error 401.0 - Unauthorized
- Вы не имеете разрешения на просмотр этого каталога пли страницы.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement