Sails.js arka ucunda bir açısal uygulama yapıyorum. Bu JWT kimlik doğrulamasını uygulamaya dahil ettim.
https://github.com/Foxandxss/sails-angular-jwt-exampleKöşeli Kimlik Doğrulama - Çoklu kimlik doğrulama düzeyleri
Kimlik doğrulamanın nasıl çalıştığını hala araştırıyorum ve şu anda birden çok yetkilendirme düzeyinin nasıl ekleneceğini anlamaya çalışıyorum. 0 ve 1 ile önceden oluşturulmuş ve bunun üzerinde bir yönetici seviyesi eklemek istiyorum.
Varolan yetkilendirme düzeylerini şu şekilde işler: Her rotaya bir sabit yoluyla bir yetkilendirme düzeyi atanır.
AccessLevels.user sabit anahtar-değer çifti çekilir$stateProvider
.state('user', {
abstract: true,
template: '<ui-view/>',
data: {
access: AccessLevels.user
}
})
:
angular.module('app')
.constant('AccessLevels', {
anon: 0,
user: 1
});
bir rota navigasyon Ne zaman Yani tüm kullanıcı yolları durumdaki veri tesiste atanan bu erişim özelliği olsun Bu, belirli bir rota için erişim seviyesinin ne olduğunu görmek için data.access özelliğini kontrol eder. Kimlik doğrulaması gerektiren bir yol olarak geri dönerse, bir simge için localStorage öğesini denetler. Bir belirteç varsa, rota devam eder, aksi takdirde sizi önler.
authorize: function(access) { //<- 'access' will be whatever is in the data property for that state
if (access === AccessLevels.user) {
return this.isAuthenticated(); // <- this just grabs the token
} else {
return true;
}
}
Yani ek bir katman eklemek için en basit yolu nedir: İşte
stateChangeStart üzerinde denir işlevdir?Açıkçası kullanıcı modeline auth_level değeri koymam gerekiyor. Ama sonra ne olacak? Bu işlevselliği eklemenin ve varolan kimlik doğrulamanın bütünlüğünü korumanın en iyi yolu ne olurdu (güvenlik konusunda endişeliyim)?
Bu nedenle sunucu tarafı yetkilendirme denetleyicisinin, başarılı oturum açmada kullanıcı nesnesini ve bir belirteç anahtar/değer çiftini geri gönderdiğini görüyorum. Simge, '{sid: user.id} 'yük yükü ile işaret yönteminin değerini içerir. Sadece bunu {sid: user.id, auth_level: user.auth_level} 'olarak değiştirebileceğimi mi söylüyorsunuz? – tpie
Yep. Bir JWT'nin iddiaları temel olarak bir haritadır ve JWT belirli belirli anahtar/değer çiftlerini (iss, sub, aud, exp, nbf, iat, jti) tanımlamakta, ancak diğer üretici/tüketici tanımlı iddiaların eklenmesine de izin vermektedir. Çoğu kitaplık, keyfi hak taleplerini de eklemeyi destekler ve JavaScript ile, hak talepleri genellikle değer eklemeye ve atamaya başlayabileceğiniz bir haritadır. –