Suggestion
After creating the demo for JWT authentication in loopback4-shopping-example, and applied a similar auth system in loopback-example-access-control, we think it's time to extract the jwt authentication system into a separate extension package, so that:
- jwt related services, bindings can be packed as a component
- people can easily mount the component when they need a simple working authentication system, they can customize and enhance the system later
- separating the component from example apps will give people a much more clear idea of what's the core of authentication
Use Cases
This extension will provide a basic jwt authentication system as a component. It's used when people want to see a demo of how to leverage an existing authentication strategy, or need a prototype of authentication to plugin and add code on it(like authorization).
Examples
In your application file, mount the authentication component like
// find a better name
import {JWT_AUTH_COMPONENT} from '@loopback/jwt-authentication-extension'
export class MyApplication extends BootMixin(
ServiceMixin(RepositoryMixin(RestApplication)),
) {
this.component(JWT_AUTH_COMPONENT)
}
Then you can secure controller endpoints with @authenticate('jwt').
Details to figure out by the story owner: how to provide the custom User model. Include it in the component? Or define it in the app and integrate it with the component?
Acceptance criteria
Suggestion
After creating the demo for JWT authentication in loopback4-shopping-example, and applied a similar auth system in loopback-example-access-control, we think it's time to extract the jwt authentication system into a separate extension package, so that:
Use Cases
This extension will provide a basic jwt authentication system as a component. It's used when people want to see a demo of how to leverage an existing authentication strategy, or need a prototype of authentication to plugin and add code on it(like authorization).
Examples
In your application file, mount the authentication component like
Then you can secure controller endpoints with
@authenticate('jwt').Details to figure out by the story owner: how to provide the custom User model. Include it in the component? Or define it in the app and integrate it with the component?
Acceptance criteria