mirror of
https://github.com/feathersjs/feathers.git
synced 2025-12-08 19:46:22 +00:00
64 lines
1.9 KiB
Markdown
64 lines
1.9 KiB
Markdown
---
|
|
outline: deep
|
|
---
|
|
|
|
# Authenticate Hook
|
|
|
|
The `authenticate` hook will use `params.authentication` of the service method call and run [authenticationService.authenticate()](./service.md#authenticate-data-params-strategies).
|
|
|
|
The hook will
|
|
|
|
- Throw an error if the strategy fails
|
|
- Throw an error if no authentication information is set and it is an external call (`params.provider` is set) or do nothing if it is an internal call (`params.provider` is `undefined`)
|
|
- If successful, merge `params` with the return value of the authentication strategy
|
|
|
|
For example, a successful [JWT strategy](./jwt.md) authentication will set:
|
|
|
|
```js
|
|
params.authentication.payload // The decoded payload
|
|
params.authentication.strategy === 'jwt' // The strategy name
|
|
params.user // or params[entity] if entity is not `null`
|
|
```
|
|
|
|
In the following hooks and for the service method call. It can be used as a `before` or `around` [hook](../hooks.md).
|
|
|
|
## authenticate(...strategies)
|
|
|
|
Check `params.authentication` against a list of authentication strategy names.
|
|
|
|
```ts
|
|
import { authenticate } from '@feathersjs/authentication'
|
|
|
|
// Authenticate with `jwt` and `api-key` strategy
|
|
// using app.service('authentication') as the authentication service
|
|
app.service('messages').hooks({
|
|
around: {
|
|
all: [authenticate('jwt', 'api-key')]
|
|
}
|
|
})
|
|
```
|
|
|
|
## authenticate(options)
|
|
|
|
Check `params.authentication` against a list of strategies and specific authentication service. Available `options` are:
|
|
|
|
- `service` - The path to the authentication service
|
|
- `strategies` - A list of strategy names
|
|
|
|
```js
|
|
import { authenticate } from '@feathersjs/authentication'
|
|
|
|
// Authenticate with `jwt` and `api-key` strategy
|
|
// using app.service('v1/authentication') as the authentication service
|
|
app.service('messages').hooks({
|
|
before: {
|
|
all: [
|
|
authenticate({
|
|
service: 'v1/authentication',
|
|
strategies: ['jwt', 'api-key']
|
|
})
|
|
]
|
|
}
|
|
})
|
|
```
|