mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
47 lines
1.7 KiB
Markdown
47 lines
1.7 KiB
Markdown
|
[![Deploy to now](https://deploy.now.sh/static/button.svg)](https://deploy.now.sh/?repo=https://github.com/zeit/next.js/tree/master/examples/with-cookie-auth)
|
||
|
# Example app utilizing cookie-based authentication
|
||
|
|
||
|
## How to use
|
||
|
|
||
|
### Using `create-next-app`
|
||
|
|
||
|
Download [`create-next-app`](https://github.com/segmentio/create-next-app) to bootstrap the example:
|
||
|
|
||
|
```
|
||
|
npm i -g create-next-app
|
||
|
create-next-app --example with-cookie-auth with-cookie-auth-app
|
||
|
```
|
||
|
|
||
|
### Download manually
|
||
|
|
||
|
Download the example [or clone the repo](https://github.com/zeit/next.js):
|
||
|
|
||
|
```bash
|
||
|
curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-cookie-auth
|
||
|
cd with-cookie-auth
|
||
|
```
|
||
|
|
||
|
Install it and run:
|
||
|
|
||
|
```bash
|
||
|
npm install
|
||
|
npm run dev
|
||
|
```
|
||
|
|
||
|
Deploy it to the cloud with [now](https://zeit.co/now) ([download](https://zeit.co/download))
|
||
|
|
||
|
```bash
|
||
|
now
|
||
|
```
|
||
|
|
||
|
## The idea behind the example
|
||
|
|
||
|
In this example, we authenticate users and store a token in a cookie. The example only shows how the user session works, keeping a user logged in between pages.
|
||
|
|
||
|
This example is backend agnostic and uses [isomorphic-unfetch](https://www.npmjs.com/package/isomorphic-unfetch) to do the API calls on the client and the server.
|
||
|
|
||
|
The repo includes a minimal passwordless backend built with [Micro](https://www.npmjs.com/package/micro) and it logs the user in with a GitHub username and saves the user id from the API call as token.
|
||
|
|
||
|
Session is syncronized across tabs. If you logout your session gets logged out on all the windows as well. We use the HOC `withAuthSync` for this.
|
||
|
|
||
|
The helper function `auth` helps to retrieve the token across pages and redirects the user if not token was found.
|