Authentication and security
Authentication Flow
-
Login (
/login)- User submits credentials
- API returns JWT token
- Token stored in
localStorageasjwt - User details and roles stored in
localStorage
-
Token Management
- JWT token sent with every API request via
Authorizationheader - Token validated on each route navigation via
AuthGuard - Invalid tokens redirect to login page
- JWT token sent with every API request via
-
Logout
- Clear
localStorage - Redirect to login page
- Clear
Guards
AuthGuard (auth.guard.ts)
- Protects all authenticated routes
- Validates JWT token on navigation
- Calls
guardianTokens()API to verify token validity - Redirects to
/loginif authentication fails
// Usage in routing
{
path: 'home',
loadChildren: () => import('./home/home.module').then(m => m.HomeModule),
canActivate: [AuthGuard]
}
RoleGuard (role.guard.ts)
- Provides role-based access control
- Checks user roles from
localStorage - Can be used for feature-specific authorization
Security Best Practices
-
Token Storage: JWT tokens stored in
localStorage(considerhttpOnlycookies for enhanced security) - HTTPS: Always use HTTPS in production
- Token Expiration: Implement token refresh mechanism
- XSS Protection: Angular's built-in sanitization helps prevent XSS
- CSRF Protection: Use Angular's CSRF token support for POST requests
No Comments