mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-04 03:43:34 +00:00 
			
		
		
		
	
		
			
	
	
		
			132 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			132 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# Users
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Most of the web applications require a user management system: registration, login,
							 | 
						||
| 
								 | 
							
								reset password, etc.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To avoid you to reinvent the wheel, Strapi embedded a full featured user management
							 | 
						||
| 
								 | 
							
								system powered by [Grant](https://github.com/simov/grant) and JSON Web Token (JWT).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Local Registration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Route used to register a user to your application: `POST /auth/local/register`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Request payload:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  "username": "John DOE",
							 | 
						||
| 
								 | 
							
								  "email": "contact@company.com",
							 | 
						||
| 
								 | 
							
								  "password": "123456"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Response payload:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  "user": {},
							 | 
						||
| 
								 | 
							
								  "jwt": ""
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Local Login
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Route used to login a user to your application: `POST /auth/local`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Request payload:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  "identifier": "contact@company.com",
							 | 
						||
| 
								 | 
							
								  "password": "123456"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Response payload:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  "user": {},
							 | 
						||
| 
								 | 
							
								  "jwt": ""
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Authentication
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								JWT does not use session. Once you get the token, it has to be stored in front (for
							 | 
						||
| 
								 | 
							
								example in the `localstorage`), and sent within each request. The token can be sent:
							 | 
						||
| 
								 | 
							
								- in the header (`Bearer`)
							 | 
						||
| 
								 | 
							
								- in the body (`token` field)
							 | 
						||
| 
								 | 
							
								- in the querystring (`token` field)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## 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
							 | 
						||
| 
								 | 
							
								- Google
							 | 
						||
| 
								 | 
							
								- Github
							 | 
						||
| 
								 | 
							
								- Linkedin2 (Oauth2 Provider for Linkedin)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To use the providers authentication, set your credentials in
							 | 
						||
| 
								 | 
							
								`./api/user/config/environments/development/grant.json`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Redirect your user to: `GET /connect/:provider`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								After his approval, he will be redirected to `/auth/:provider/callback`. The jwt and user will be available in the querystring.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Response payload:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  "user": {},
							 | 
						||
| 
								 | 
							
								  "jwt": ""
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Custom providers
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Strapi comes with 5 providers. If you want to add another one, it can be easily done thanks to [Purest](https://github.com/simov/purest), by adding it in the Grant service.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Forgot password
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Send an email to the user with an activation code: `POST /auth/forgot-password`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Request payload:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  "email": "contact@company.com"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Change password
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Route used to update the password of a user after he asked for a
							 | 
						||
| 
								 | 
							
								"forgot-password" email: `POST /auth/change-password`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Request payload:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  "code": "",
							 | 
						||
| 
								 | 
							
								  "password": "123456",
							 | 
						||
| 
								 | 
							
								  "passwordConfirmation": "123456"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Response payload:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  "user": {},
							 | 
						||
| 
								 | 
							
								  "jwt": ""
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Accessing user from requests.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you want to access attributes of the logged in user, you can use `this.user` inside of your controller action. 
							 |