rsnext/examples/with-cookie-auth
James Mosier 5e6f79117f Fix(9312) - Fix redirect logic for with-cookie-auth (#9413)
* Fix redirect logic for unauthenticated flows

* check for lack of existence of window for server code

Co-Authored-By: Luis Alvarez D. <luis@zeit.co>

* remove comment

Co-Authored-By: Luis Alvarez D. <luis@zeit.co>

* remove comment

Co-Authored-By: Luis Alvarez D. <luis@zeit.co>
2019-11-14 10:58:22 -05:00
..
components Improve linting rules to catch more errors (#9374) 2019-11-10 19:24:53 -08:00
pages Improve linting rules to catch more errors (#9374) 2019-11-10 19:24:53 -08:00
utils Fix(9312) - Fix redirect logic for with-cookie-auth (#9413) 2019-11-14 10:58:22 -05:00
next.config.js Improve linting rules to catch more errors (#9374) 2019-11-10 19:24:53 -08:00
package.json Auth example with api routes (#8118) 2019-07-25 18:52:41 -05:00
README.md Replace the deprecated Create Next App URL (#9032) 2019-10-10 23:34:14 -04:00

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

After you clone the repository you can install the dependencies, run yarn dev and start hacking! You'll be able to see the application running locally as if it were deployed.

$ cd with-cookie-auth
$ (with-cookie-auth/) yarn install
$ (with-cookie-auth/) yarn dev

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 the new API Routes support (pages/api), Micro and the GitHub API. The backend allows the user to log in with their GitHub username.

Session is synchronized across tabs. If you logout your session gets removed 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.