Clicky

Skocz do zawartości


Zdjęcie
- - - - -

[Apigility] Uruchomienie OAuth2

1 odpowiedź w tym temacie
Apigility AngularJs OAuth2

  • Zaloguj się, aby dodać odpowiedź

#1 mateusz_85

mateusz_85

    Początkujący

  • Użytkownik
  • Pip
  • 1 postów

Napisano 17 październik 2014 - 11:53

Witam,

jestem w trakcie tworzenia aplikacji webowej i przyszedł czas na wprowadzenie zabezpieczeń.

Krótko o aplikacji:

-Baza danych- MySQL

-API napisane jest w php, do generowania serwisów RESTowych używam Apigility

-Frontedn to AngularJS

Póki co nie wporowadzałem żadnych zabezpieczeń, komunikacja działa na http.

 

Potrzebuję wprowadzić autoryzację poprzez OAuth2.

Uruchomiłem OAuth2 na Apigility, stworzyłem odpowiednie tabele w bazie.

Moje pytania:

1. Jak sprawnie przestawić komunikację z Apache na https?

2. Jak rozwiązać pobieranie i wykorzystywanie tokenów po stronie angulara?

 

Z góry dziękuję za pomoc :)



#2 PrzemB

PrzemB

    Początkujący

  • Użytkownik
  • Pip
  • 5 postów

Napisano 16 listopad 2015 - 18:07

Wesprę Cię odpowiedzą na drugie pytanie. Użyj usługi interceptorów.

 

https://docs.angular...tp#interceptors

 

Poniżej zamieszczam wycinek mojego kodu który powinien szybko Cię naprowadzić na rozwiązanie

var common = angular.module('app.common');

/* @ngInject */
common.service('APIInterceptor', function($rootScope, $q, $base64, UserService, TokenService) {
	var service = this;

	service.request = function (config) { 
		var currentUser = UserService.getCurrentUser(),
			access_token = currentUser ? currentUser.access_token : null;

		if (access_token) {
			config.headers.Authorization = access_token;
		}

		return $q.when(config);
	};

	service.response = function (response) {
		var currentUser = UserService.getCurrentUser(),
			newToken = response.headers().authorization;

		if (newToken !== undefined) {
			var payload = JSON.parse($base64.decode(newToken.split('.')[1]));
			TokenService.setTokenPayload(payload);
		}

		if (currentUser && newToken !== undefined) {
			currentUser.access_token = newToken;
			UserService.setCurrentUser(currentUser);
		}

		return $q.when(response);
	};

	service.responseError = function (response) {
		if (response.status === 401) {
			$rootScope.$broadcast('unauthorized');
		}
		return $q.reject(response);
	};
});

Następnie rejestruje usługę zawierającą interceptory:

common.config(function ($httpProvider) {
	$httpProvider.interceptors.push('APIInterceptor');
});






Również z jednym lub większą ilością słów kluczowych: Apigility, AngularJs, OAuth2

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych