वहाँ एक $cookies
सेवा उपलब्ध है ngCookies
मॉड्यूल का उपयोग कर AngularJS API में। यह नीचे की तरह इस्तेमाल किया जा सकता है:
function controller($cookies) {
//set cookie
$cookies.put('token', 'myBearerToken');
//get cookie
var token=$cookies.get('token');
//remove token
$cookies.remove('token');
}
controller.$inject=['$cookies'];
अपने मामले के लिए यह होगा:
//inject $cookies into controller
$scope.GetAuthorizeData = function() {
$http({
method: 'GET',
url: "/api/Values",
headers: { 'authorization': 'bearer <myTokenId>' },
})
.success(function (data) {
$cookies.put('token', data);
}).error(function() {
alert("Failed :(");
});
};
तुम भी angular-cookies module कोड जोड़ने के लिए होगा। और इसे अपने कोणीय ऐप में जोड़ें: angular.module('myApp', ['ngCookies']);
। Docs for Angular Cookies.
मैं Http interceptor
के उपयोग का भी सुझाव देना चाहूंगा जो प्रत्येक अनुरोध के लिए मैन्युअल रूप से सेट करने के बजाय प्रत्येक अनुरोध के लिए भालू शीर्षलेख सेट करेगा।
//Create a http interceptor factory
function accessTokenHttpInterceptor($cookies) {
return {
//For each request the interceptor will set the bearer token header.
request: function($config) {
//Fetch token from cookie
var token=$cookies.get['token'];
//set authorization header
$config.headers['Authorization'] = 'Bearer '+token;
return $config;
},
response: function(response) {
//if you get a token back in your response you can use
//the response interceptor to update the token in the
//stored in the cookie
if (response.config.headers.yourTokenProperty) {
//fetch token
var token=response.config.headers.yourTokenProperty;
//set token
$cookies.put('token', token);
}
return response;
}
};
}
accessTokenHttpInterceptor.$inject=['$cookies'];
//Register the http interceptor to angular config.
function httpInterceptorRegistry($httpProvider) {
$httpProvider.interceptors.push('accessTokenHttpInterceptor');
}
httpInterceptorRegistry.$inject=['$httpProvider'];
//Assign to module
angular
.module('myApp')
.config(httpInterceptorRegistry)
.factory('accessTokenHttpInterceptor', accessTokenHttpInterceptor)
होने http interceptor
जगह में आप प्रत्येक अनुरोध के लिए Authorization header
निर्धारित करने की आवश्यकता नहीं है।
function service($http) {
this.fetchToken=function() {
//Authorization header will be set before sending request.
return $http
.get("/api/some/endpoint")
.success(function(data) {
console.log(data);
return data;
})
}
}
service.$inject=['$http']
जैसा कि बोरीस ने कहा है: इसे हल करने के अन्य तरीके हैं। टोकन को स्टोर करने के लिए आप localStorage
का भी उपयोग कर सकते हैं।इसका उपयोग http इंटरसेप्टर के साथ भी किया जा सकता है। कुकीज़ से स्थानीय स्टोरेज में कार्यान्वयन को बस बदलें।
function controller($window) {
//set token
$window.localStorage['jwt']="myToken";
//get token
var token=$window.localStorage['jwt'];
}
controller.$inject=['$window'];
हां। इसे समझो। धन्यवाद। अच्छा स्पष्टीकरण। –
हैलो, '' कहां होगा? इसे कहां मिलना है? –
Kavipriya