- App to prevent access to 'members' route if user not authorized. Authorization is via email & password converted to a JWT token instead of using a backend.
- Another great tutorial from Simon Grimm of the IonicAcademy' - see 👏 Inspiration below.
- Note: to open web links in a new window use: ctrl+click on link
- Initial screen is a login page with email and password fields.
- Angular 'canActivate' authguard limits access to the 'members/' route to only authorised (JWT token-bearing) users.
- Example login details stored in app to test login system and avoid the need for a backend
- Correct login credentials routes user to 'member' page
- User credentials stored in Ionic storage so they can be viewed in Dev console/Application/Storage/Ionic Storage/_ionickv
- Note: the 'register' page does not actually do anything
- Ionic v6
- Ionic/angular v6
- Angular v14
- Angular RxJS Library v7 Observable functions
- @auth0/angular-jwt v5 provides an HttpInterceptor which automatically attaches a JSON Web Token to HttpClient requests.
- Ionic Storage for Angular v3 key-value Storage module based on LocalForage.
- Run
npm i
to install dependencies - To start the server on localhost://8100 type: 'ionic serve'
- App uses example credentials to test system. There is no connection to an external database etc.
- To start the server on a mobile using Ionic devapp and connected via wifi, type: 'ionic serve --devapp'
- The Ionic DevApp was installed on an Android device from the Google Play app store.
💻 Code Examples from Simon Grimm of the IonicAcademy'
- canActivate function uses auth service to see if user authorized.
// uses auth.service to check if user has token in storage. Returns true if there is a token
// returns false if user does not have a token and navigates to initial login page.
canActivate(route: ActivatedRouteSnapshot): Observable<boolean> {
return this.auth.user.pipe(
take(1),
map(user => {
console.log('Can activate: ', user);
if (!user) {
this.alertCtrl.create({
header: 'Unauthorized',
message: 'You are not allowed to access that page.',
buttons: ['OK']
}).then(alert => alert.present());
this.router.navigateByUrl('/');
return false;
} else {
return true;
}
})
);
}
- JWT token generated and stored using Ionic Storage - viewable in the Dev console.
- AuthGuard canActivate only true with this token. Token removed upon logging out.
- Status: Working. Tested using ionic server and dummy user credentials to replace 'register' function.
- To-do: Nothing
- Simon Grimm of the IonicAcademy, Youtube video 'Building an Ionic 4 JWT Login with Tab Bar & Angular Routing'
- Written version of tutorial from Devtactic website: Building an Ionic 4 JWT Login with Tab Bar & Angular Routing
- This project is licensed under the terms of the MIT license.
- Repo created by ABateman, email: gomezbateman@yahoo.com