2016-05-25 2 views
1

Я использую аутентификацию токена на носителе Web API oauth + AngularJs from here Он работает в других браузерах, но в Microsoft Edge он не работает. В этом браузере я получаю токен с сервера, но остаюсь на этой странице, , хотя браузеру необходимо перенаправить на другую страницу. Я думаю, что проблема возникает, когда я устанавливаю данные токена в локальное хранилище. Я делаю это таким образомВеб-интерфейс аутентификации маркера на носителе Oauth не работает в браузере Edge

if (loginData.useRefreshTokens) { 
      localStorageService.set('authorizationData', { token: response.access_token, userName: loginData.userName, refreshToken: response.refresh_token, useRefreshTokens: true }); 
     } 
     else { 
      localStorageService.set('authorizationData', { token: response.access_token, userName: loginData.userName, refreshToken: "", useRefreshTokens: false }); 
     } 

ответ

0

Проблема была, когда я делаю HTTP GET запрос на метод Web API, который проверить, если текущий пользователь требуется роль, таким образом

AngularJS

$http({ 
     method: "GET", 
     url: "api/Models/CheckAccess/" 
    }).then(function mySucces(response) { 
     if (response.data === true) { 
      $location.path(page); 
     } 
     else 
     { 
      authServiceFactory.logOut(); 
      $location.path("login"); 
     } 

    }); 

Метод WebApi

[HttpGet] 
    public bool CheckAccess() 
    { 
     var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;   
     var userRole = identity.Claims.Where(c => c.Type == ClaimTypes.Role) 
          .Select(c => c.Value).SingleOrDefault(); 
     if (userRole=="Hauler") 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     }  
    } 

В браузере Edge он всегда возвращает fal как таковые. Я решаю эту проблему таким образом

[HttpGet] 
    [Authorize(Roles = "Hauler")] 
    public bool CheckAccess() 
    {  
     return true; 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^