mirror of
https://github.com/strapi/strapi.git
synced 2025-07-12 03:22:59 +00:00
195 lines
4.9 KiB
Markdown
195 lines
4.9 KiB
Markdown
# Authentication
|
||
|
||
> ⚠️ This feature requires the Users & Permissions plugin (installed by default).
|
||
|
||
## Register a new user
|
||
|
||
This route lets you create new users.
|
||
|
||
#### Usage
|
||
|
||
```js
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: 'http://localhost:1337/auth/local/register',
|
||
data: {
|
||
username: 'Strapi user',
|
||
email: 'user@strapi.io',
|
||
password: 'strapiPassword'
|
||
},
|
||
done: function(auth) {
|
||
console.log('Well done!');
|
||
console.log('User profile', auth.user);
|
||
console.log('User token', auth.jwt);
|
||
},
|
||
fail: function(error) {
|
||
console.log('An error occurred:', error);
|
||
}
|
||
});
|
||
```
|
||
|
||
## Login.
|
||
|
||
This route lets you login your users by getting an authentication token.
|
||
|
||
#### Local
|
||
|
||
- The `identifier` param can either be an email or a username.
|
||
|
||
```js
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: 'http://localhost:1337/auth/local',
|
||
data: {
|
||
identifier: 'user@strapi.io',
|
||
password: 'strapiPassword'
|
||
},
|
||
done: function(auth) {
|
||
console.log('Well done!');
|
||
console.log('User profile', auth.user);
|
||
console.log('User token', auth.jwt);
|
||
},
|
||
fail: function(error) {
|
||
console.log('An error occurred:', error);
|
||
}
|
||
});
|
||
```
|
||
|
||
## Providers
|
||
|
||
Thanks to [Grant](https://github.com/simov/grant) and [Purest](https://github.com/simov/purest), you can easily use OAuth and OAuth2
|
||
providers to enable authentication in your application. By default,
|
||
Strapi comes with four providers:
|
||
- [Facebook](https://github.com/strapi/strapi-examples/blob/master/login-react/doc/fb_setup.md)
|
||
- [Google](https://github.com/strapi/strapi-examples/blob/master/login-react/doc/google_setup.md)
|
||
- [Github](https://github.com/strapi/strapi-examples/blob/master/login-react/doc/github_setup.md)
|
||
- [Twitter](https://github.com/strapi/strapi-examples/blob/master/login-react/doc/twitter_setup.md)
|
||
|
||
[👀 See our complete example with detailed tutorials for each provider (with React)](https://github.com/strapi/strapi-examples/tree/master/login-react)
|
||
|
||
---
|
||
|
||
To use the providers authentication, set your credentials in the admin interface (Plugin Users & Permissions > Providers).
|
||
Then update and enable the provider you want use.
|
||
|
||
Redirect your user to: `GET /connect/:provider`. eg: `GET /connect/facebook`
|
||
|
||
After his approval, he will be redirected to `/auth/:provider/callback`. The `jwt` and `user` data will be available in the body response.
|
||
|
||
Response payload:
|
||
|
||
```js
|
||
{
|
||
"user": {},
|
||
"jwt": ""
|
||
}
|
||
```
|
||
|
||
## Use your token to be identified as a user.
|
||
|
||
By default, each API request is identified as `guest` role (see permissions of `guest`'s role in your admin dashboard). To make a request as a user, you have to set the `Authorization` token in your request headers. You receive a 401 error if you are not authorized to make this request or if your authorization header is not correct.
|
||
|
||
#### Usage
|
||
|
||
- The `token` variable is the `data.jwt` received when login in or registering.
|
||
|
||
```js
|
||
$.ajax({
|
||
type: 'GET',
|
||
url: 'http://localhost:1337/article',
|
||
headers: {
|
||
Authorization: `Bearer ${token}`
|
||
},
|
||
done: function(data) {
|
||
console.log('Your data', data);
|
||
},
|
||
fail: function(error) {
|
||
console.log('An error occurred:', error);
|
||
}
|
||
});
|
||
```
|
||
|
||
## Send forgot password request.
|
||
|
||
This action sends an email to a user with the link of you reset password page. This link contains an URL param `code` which is required to reset user password.
|
||
|
||
#### Usage
|
||
|
||
- `email` is your user email.
|
||
- `url` is the url link that user will receive.
|
||
|
||
```js
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: 'http://localhost:1337/auth/forgot-password',
|
||
data: {
|
||
email: 'user@strapi.io',
|
||
url: 'http://mon-site.com/rest-password'
|
||
},
|
||
done: function() {
|
||
console.log('Your user received an email');
|
||
},
|
||
fail: function(error) {
|
||
console.log('An error occurred:', error);
|
||
}
|
||
});
|
||
```
|
||
|
||
> Received link url format http://mon-site.com/rest-password?code=privateCode
|
||
|
||
## Reset user password.
|
||
|
||
This action will reset the user password.
|
||
|
||
#### Usage
|
||
|
||
- `code` is the url params received from the email link (see forgot password)
|
||
|
||
```js
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: 'http://localhost:1337/auth/reset-password',
|
||
data: {
|
||
code: 'privateCode',
|
||
password: 'myNewPassword',
|
||
passwordConfirmation: 'myNewPassword'
|
||
},
|
||
done: function() {
|
||
console.log('Your user password is reset');
|
||
},
|
||
fail: function(error) {
|
||
console.log('An error occurred:', error);
|
||
}
|
||
});
|
||
```
|
||
|
||
## User Object In Strapi Context
|
||
The User object is available to successfully authenticated requests.
|
||
|
||
#### Usage
|
||
- The authenticated `user` object is a property of `ctx.state`.
|
||
|
||
|
||
```js
|
||
create: async (ctx) => {
|
||
|
||
const { _id } = ctx.state.user
|
||
|
||
const depositObj = {
|
||
...ctx.request.body,
|
||
depositor: _id
|
||
}
|
||
|
||
const data = await strapi.services.deposit.add(depositObj);
|
||
|
||
// Send 201 `created`
|
||
ctx.created(data);
|
||
}
|
||
|
||
```
|
||
|
||
|
||
## Email templates
|
||
|
||
[See the documentation on GitHub](https://github.com/strapi/strapi/blob/master/packages/strapi-plugin-users-permissions/docs/email-templates.md)
|