2014-10-02 7 views
0

내가 여기에 두 가지를 달성하기 위해 노력하고 있습니다 :AngularJS와/웹 API이 토큰 Authenticaion

1)을 설정 차례로 getTokenFromServer.getToken를 호출 getToken.getToken()에 로그인 화면에서 사용자 이름과 암호를 전달을 토큰을 반환 된 토큰 값으로 변환합니다.

2) Angular 컨트롤러에서 이후의 각 시간에 getToken.getToken을 호출합니다. 그러나 이번에는 이미 검색된 토큰을 리턴합니다. 이것은 싱글 톤이므로 getToken 팩토리에 저장되어 있습니까?

AngularJS/Web API 2 인증과 함께 올바른 위치에 있습니까?

내가 알고있는 getTokenFromServer.getToken은 유효한 사용자 이름과 암호가 주어지면 유효한 토큰을 반환합니다. 하지만 토큰이 필요한 컨트롤러에 대한 후속 호출을 위해 토큰을 저장한다는 측면에서 정확히 무엇을해야할지 모르겠습니다. 도와 줘서 고마워.

securityApp.factory("getToken", function (getTokenFromServer) { 

    function getToken(userName, password) { 

     var token; 

     if (!!token) { 
      getTokenFromServer.getToken(username, password).then(function (data) { 
       token = data; 
      }); 
     }; 

     return token; 
    } 

}); 


securityApp.factory("getTokenFromServer", function ($http, $q) { 

    function getToken(userName, password) { 

     return $http({ 
      method: 'POST', url: '/token', data: { username: userName, password: password, grant_type: 'password' }, transformRequest: function (obj) { 
       var str = []; 
       for (var p in obj) 
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
       return str.join("&"); 
      } 
     }) 
     .then(function (result) { 
      return result.data.access_token; 

     }, function (errorResponse) { 
      return $q.reject(errorResponse.data); 
     }); 

    } 

    return { 
     getToken: getToken 
    }; 

}); 
+2

토큰을 쿠키로 유지하고 후속 서버 호출의 헤더에 넣으십시오. –

답변

3

는 한 번만 (서버에서 요청 토큰)과이 만료 될 때까지 사용자의 인증 서버에서 액세스 토큰을 확보 할 필요가있다.

토큰을 얻은 후에는 html 로컬 저장소에 저장하고 httpInterceptor 서비스를 사용하여 각 후속 요청에 대한 인증 헤더를 보내야합니다.

자세한 일련의 게시물을 작성했으며 문제가 정확하게 해결되었습니다. 그것에 대해 더 많이 읽을 수 있습니다 AngularJs Authentication using Web API 2

추가 도움이 필요하면 의견을 보내주십시오.

+0

대단히 감사합니다. 나는 당신의 글을 훑어보고 한 번 시도해 볼 것입니다. –

+0

귀하의 게시물이 도움이되었습니다. 기사 작성에 다시 한 번 감사드립니다. –

관련 문제