Guards 
Navigation guards control access to routes within an application. They allow you to define navigation rules in your app based on the user's status (authenticated or not), permissions, and route definitions.
Registering and Unregistering Guards 
Guards are registered and unregistered in the boot/kdk.js file.
Registering 
To register a guard, use the registerGuard method :
import { beforeGuard, authenticationGuard } from '@kalisio/kdk/core.client'
beforeGuard.registerGuard(authenticationGuard)Unregistering 
To unregister a guard, use the unregisterGuard method :
beforeGuard.unregisterGuard(authenticationGuard)Authentication guard 
The authenticationGuard function uses the metadata (authenticated, unauthenticated or public) defined in the routes to check if a user is authenticated and whether to allow navigation.
Permissions guard 
The permissionsGuard function checks if the user has the necessary permissions to access a route. Permissions can be defined in the route's metadata (can) and may use route or query parameters.
Public route guard 
The publicRouteGuard checks if the corresponding route is an existing public route or not.
TIP
publicRouteGuard should be defined after authenticationGuard.