নিখোঁজ সরবরাহকারীর সমস্যার জন্য এটি এবং আমার একটি সম্ভাব্য সমাধান এখানে দেওয়া।
আমার ক্ষেত্রে, আমাদের একজন প্রহরী রয়েছে যা অনুমতি বা প্যারামিটার হিসাবে অনুমতিগুলির তালিকা গ্রহণ করে, তবে একই জিনিসটির ভূমিকা রয়েছে।
অনুমতি ছাড়াই বা ছাড়াই লেখক রক্ষীদের সাথে ডিল করার জন্য আমাদের একটি ক্লাস রয়েছে:
@Injectable()
export class AuthGuardService implements CanActivate {
checkUserLoggedIn() { ... }
এটি ব্যবহারকারীর সক্রিয় অধিবেশন, ইত্যাদি যাচাইয়ের সাথে সম্পর্কিত deals
এটিতে একটি কাস্টম অনুমতি গার্ড প্রাপ্ত করতে ব্যবহৃত একটি পদ্ধতি রয়েছে যা আসলে নিজের উপর নির্ভর AuthGuardService
করে
static forPermissions(permissions: string | string[]) {
@Injectable()
class AuthGuardServiceWithPermissions {
constructor(private authGuardService: AuthGuardService) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
return this.authGuardService.canActivate(route, state) && this.checkPermissions();
}
checkPermissions() {
const user = ...
return user.hasPermissions(permissions);
}
}
AuthGuardService.guards.push(AuthGuardServiceWithPermissions);
return AuthGuardServiceWithPermissions;
}
এটি আমাদের রুটিং মডিউলে অনুমতিগুলির প্যারামিটারের ভিত্তিতে কিছু কাস্টম গার্ডকে নিবন্ধিত করার পদ্ধতিটি আমাদের ব্যবহার করতে দেয়:
....
{ path: 'something',
component: SomeComponent,
canActivate: [ AuthGuardService.forPermissions('permission1', 'permission2') ] },
মজার অংশটি forPermission
হ'ল AuthGuardService.guards.push
- এটি মূলত নিশ্চিত করে যে কোনও সময় forPermissions
কাস্টম গার্ড ক্লাস গ্রহণের জন্য বলা হয়েছিল এটি এটি এই অ্যারেতে সংরক্ষণ করবে। এটি মূল শ্রেণীর উপর স্থিরও:
public static guards = [ ];
তারপরে আমরা সমস্ত গার্ডকে নিবন্ধভুক্ত করতে এই অ্যারেটি ব্যবহার করতে পারি - এটি ঠিক আছে যতক্ষণ না আমরা নিশ্চিত হয়েছি যে অ্যাপ মডিউলটি এই সরবরাহকারীদের নিবন্ধভুক্ত করে, রুটগুলি সংজ্ঞায়িত করা হয়েছিল এবং সমস্ত প্রহরী শ্রেণি তৈরি হয়েছিল (যেমন আমদানির আদেশ পরীক্ষা করে দেখুন এবং এই সরবরাহকারীদের তালিকায় যতটা সম্ভব কম রাখুন - একটি রাউটিং মডিউলটি সহায়তা করে):
providers: [
AuthGuardService,
...AuthGuardService.guards,
]
আশাকরি এটা সাহায্য করবে.