rsnext/examples/with-cookie-auth/README.md
Kévin Dunglas 3f8dd6b665 with-cookie-auth: don't rely on the Host header (#7435)
* with-cookie-auth: don't rely on the Host header
2019-06-07 13:18:41 -05:00

2.1 KiB

Example app utilizing cookie-based authentication

How to use

Using create-next-app

Download 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:

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

Run locally

The repository is setup as a monorepo so you can run start the development server with now dev inside the project folder.

Install the packages of /api and /www using npm or yarn:

cd api
npm install
cd ../www
npm install

Now you can start the development server in the root folder:

now dev

You can configure the API_URL environment variable (defaults to http://localhost:3000) with Now env in the now.json file:

"build": {
  "env": {
    "API_URL": "https://example.com"
  }
},

Deploy

Deploy it to the cloud with now (download)

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 to do the API calls on the client and the server.

The repo includes a minimal passwordless backend built with Micro that logs the user in with a GitHub username and saves the user id from the API call as token.

Session is synchronized 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.