Skip to content

Commit 55d8466

Browse files
authored
Merge pull request #56 from tecladocode/master
Release section 13
2 parents 729e491 + f8a6f68 commit 55d8466

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1538
-0
lines changed

curriculum/.vuepress/config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ module.exports = {
7676
path: "/section12/",
7777
children: getChildren("section12", "lectures"),
7878
},
79+
{
80+
title: "Section 13: Authentication with Flask",
81+
path: "/section13/",
82+
children: getChildren("section13", "lectures"),
83+
},
7984
],
8085
sidebarDepth: 0,
8186
},

curriculum/section13/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
name: Authentication in Flask Apps
3+
---
4+
5+
# Authentication in Flask Apps
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2022-02-11T11:25:58.399Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="DbFg4FohUKfGQm54OyWE" version="16.5.1" type="device"><diagram id="hRghi5o9NDVKIBWtprYw" name="Page-1">7ZxbV+I6FMc/DY+yei999MbxzChyQM8ZfZkV2gDR0HTSIuKnP0mbQm9AQKijg66ldDdNL/ntf/ZOUhr6+eT1LwqC8Q3xIG5oivfa0C8amqaalsX+ccs8sThKKzGMKPJEoaWhj96gMCrCOkUeDHMFI0JwhIK80SW+D90oZwOUklm+2JDg/FkDMIIlQ98FuGz9D3nRWFhVy1nuuIJoNBanbml2smMC0sLiTsIx8MgsY9IvG/o5JSRKPk1ezyHmDy99Lslx7RV7FxdGoR/JHDAdPBm957F3Nv12d/OG2r+Q456IWl4AnoobFhcbzdMnMEQYnxNMKNv0ic+sZ2FEyTMsGAOC/AjSyxd2PfyhK8w2JH7UF1Xx7XE0weyjyj7OxiiC/QC4fN+MwcNsrBEjgHxIRRmXYAyCEA0WFbhjhL1rMCdTfs9hBNzndOuMwpDh000fCK/AoyS4A3QEo/QCCEVv/Cy4z4/NXmaCnqrz+2OXhfyR2Jvc7S23RZxiVYmPYY+laKNk6nvQEycHg5DgaQRPqZtWzq3LLS13QbmzpaypTZPZRCNBGsHXla2vLphizgjJBEZ0zoqkfifcbpaD2GrqNnM1xTFYCUMUGWdwthWj6WR/kiIo7JEIRDDPIhC+NlqcfYkj+yCI3IJOrUTnOUb8houMhjM0wSDGcGvEYt0AGcRK0DHMaMqHrlRhtWx4pbJNK3hKvaeh6QON/25FWhUlWYrtpiEsmfMM45+CW+riDJlyuma3XCDL3WpdKcO4JX1qS2naBturKKykYhj6gUDTS6D1IWX3fQRtf6CpZdAM3bHjcnsHbb4eoC05NDWjqZmmbTuOpdmOaR4IQ+MP640/sN/Nc600W+/sZtMDWiL8EwBqjlkizkgjwixihnMoqMwSVG0MwmcekxMWWbN4eozC9wldQdiKnG0raxtULPnZCpCC7iz0qYqCIvZVnlR2BQrdKQ3RC+zF3K8AvKCTizsBGI18ZnMhP9W7BNHY2PPWzJ91FLVPLmpW2mRrRM3U1aahGYqimqyHtK2KXvRwiNklxG6nNB4U8OBR576mzlkbde5ASN6HkN4Onvhgk6ZgMIA4OfSvy7sGV9Z2QEnE9rJmjqvGUxd57pihkRz1tyD5+ic8eTq7n//88e8/Iqtex3grc7/CJzIYZ9gl7GkOcTzSNMCEj3Gcxf/7C9pWEV5QnIW2mKUmXqQBm4J+rarRBffXcMibwWnaS1tPtE3OeEcCXlVM7dJn9GS74BuSnrFIcfc93CIOaBk5xVRNq5x4VHXDlrI1j2wzg+QWquls7phHDImgSsiqxGIPj02zyj2LZVSFK/vz21PXhWHImWLV8atduq8CfS++0/We3GnenlmTHr05d5oSnqwqjYO7ctZbE18qeCtwwHDQqkjRN3hrha+WPTXvp1JeumPEI9fhbeHWqz1lbV9TCam+/bhohTOv4vYbCXlw0wf4BUQIUsrhbdisCkVlJ1bacMD+sl/h1gFmhIwJ9iDNz4msw1o7o/2e+oPKYK3Wi7Va1QktsD5iLI3xPE/rJqpV45BUb0byrmsOnN4NkUFSk0XyCUbRPG2RlgR9aZTbBhOE+RO8gvgFRigTVFRhWR3KVzVzIVXgqcUpn89sLLJh1jkVLMkjgV5pSvPd+savs0xCaqQQMwl6yZ+1io/4HOyiwTxTIO5hwyw+k9du0usuhtXsfAaqF8KkkEypC7uLrnpVPYatr60nimOcUj0xzosH807CLxCPLFwxkaWErBkbmoX58MKA6aw14p+mScIaZ68gAvEGiMrlkMdqQUMkElw4aejt9S707TnoPFK1OyXutYwL6TXkHWMyGbA7fkceWZ0WvC+ZPpiOJ/l3ACliQEG6fED7iqKN/CC0bivl7KNyvk1tfZy2j3DQAbcXVqvvSoUbhiyYO2u7HHlbklaFwqrEW+Nza1zO0wCd0GhMRsQH+HJp3dQ5pN7ITG2E06cCX1H0I74Cp2WI7Yd42xRb3RRQQSa7Yzrnh5woTUXRU0vmIL5ZPEqiTxKmRMQ3ahHTuTQTXVVQ16r948M6tJ06EMkVPOX5nQdYHudkasL7i4xbxGPZmdHM2FHPgPs8inFMifbgEEzjXqeEPhcpFvDgU7FjgjwvBnKV8xSdbPdQVl0xzSHdcFsOEqyXLsSka3DvWzoc2jLSlR27PErXO6TLzAnXUshWSldGqB5SJTN+J+nSfrdY/JDSVZ636ZAvr1wrJi4+Rrl6TLnck9nl48k/Ixnlkp6F2Em5PrsgqWlcJB9LMQFiRNQeSumapB6pX0KPVubi6cwwT7SnIV/wV8ywx+CF7wTxLAEvSxrpVPJyemBT0t1nbtaZwJ/hrPsi42aOrJsdk+7tku49ZNeWWRiLqsquzSqX0PYyubeb0AeToHN949yoD7MTCQI16TmqY4j6VbJrRzZE3bzE7BN0CZJvIJRfkPkDsuuc9394jEqZdAWXw1AZKX/LSNfhJ33+EOn6PNm1tHS1qsH+ktJVfqnl62fXOeevQbl6Uz9OB9ijGY0XmUT1EiKxHHWd1LWZ1I0m6vDC9mXWBGrScyD7WXKxY3bg/DG5Qcsq5Aat8nq2ynV/zkFTgx50IUrS2NgXwoD44QYUf9Gg4w2aI0IeZeaJNbOGlPW4PnVf61NVRc+vhKh5hepukeAVY5Iar9908/lNhsnDzrN89gBvl9HK+tNSzZCN7cxq4j9XbLebY3xnjvGza6jNtjGQcQz76BjrHGNLp/iYIfyWpF/kVnB9Ob/oQQ/RxJqM36cD9DzawYQv6kd+Q3zPy1ofMpkPvWH1mkLyJONDNbyQc4y9txmXt/Kr3kyj4itP6o+9zykEURp6u4Q8o3iDL/pkZLp4Gr+iiKIU1IRcn6flsqH6NAw6zflj5yG4MGXIrWF26UjuVm89ab8jueuhe4iCTg83L29u34AEdPphJ5Q+fcixy8qB3GCrWtNYqyY71vo1FmGuco5+RCj08qKdqntxCQGhQv75Uv4B2CTnpBl0Op3WfXfgzmQ8q4b3rlitKAhjyscg4DtcTKZewRHVZvpC4X6WD6iOY9lezWLv2rAF3MONvBhW4RUUrULsdbPsF2l4c6ghwogi+JJ54SR2vxjx7JKXJMheh2+Ig865+2Q+KvMzGXylp+uO0Ugt0YhhFt4e+T3GsJmY/pry78o8C/nr2sRfGtbz2CVBB73hq8n3yb8yPNbwwtPiq0DVApxarDLrhVGEFgUq2u3L81OnTMWemNDyTBhWec2TVftg8UVGlwb8at0xdJ+TN/kXkAg5W0eIxQgZz3qnqjO4kiGkhlm3T0eIrRZmvvSK+QTFqRuRpUgsgjMp0bD8oBPNnYvht3Op7KaG2a9Ph4RWEA09XTj5oaKxvt3twa9O93vXBPdviky7H2eYDpzV1pHRyo6kf40ZJmZaful4UsPyq9v1y/8B</diagram></mxfile>

curriculum/section13/diagrams/Cookies and sessions.drawio

Lines changed: 277 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2022-02-11T11:30:01.850Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="k7fCep_u66LX6VcvvbXE" version="16.5.1" type="device"><diagram id="wdqe_9LaCi68esuMksYp" name="Page-1">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</diagram></mxfile>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2022-02-11T16:21:13.115Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="vxJIlrlfC2v6C7M7Rq6c" version="16.5.1" type="device"><diagram id="hvXVmtLN84fM57t1r2kW" name="Page-1">7Vhdb9owFP01kbaHVo4DAR6B0nZSN03qpD0bckk8TMwch4/++tnESTAurF0pTafygn19449z7rnXiRcM5+sbQRbJVx4B8zCK1l5w5WHs+yhUf9qyKSzdNi4MsaCRcaoN9/QBjBEZa04jyCxHyTmTdGEbJzxNYSItGxGCr2y3KWf2qgsSg2O4nxBmrLi2/qSRTMpzhb164BZonJilu7hTDMxJ6WxOkiUk4qsdUzDygqHgXBat+XoITINX4lI8d31gtNqugFQ+5QE2ewghym/5ZgrDb8HN6MsyvgiKWZaE5ebAZrNyUyIAkQLEdLmQCY95Stiotg4Ez9MI9DJI9WqfO84Xyugr4y+QcmPYJbnkypTIOTOjmRR8VuGLK8uQMy62uwh6258acY9tkMh4LiZw5Kxl+BARgzziZyDQ595ZwIB6A3wOUmyUgwBGJF3a4UNMvMWVX02JahhWnsFQKYQdiiYCiFR4YzTePErXHRkrGVoQE0bjVLUnCjZQmA6WICRVcd43A3MaRQWbkNEHMt7Op/lccJrK7anaA6999SgFR2NLLQRrCyQjVrOIpQcLYfPUBbrEPWymM3mkZPPJJJjZv+vT7EyNQ2va/Rn4dJqpYNknsdrjv/Pa/lCe49dqlPJ6DkOZ5KL5uisj68W6Q5e+LY4TSe5cEut8SMzxCxslse7jEssarK4yqE5R1VD7NWranmjRueTmO2QOOZ9RcMisJaU5XCVUwv2CbMN7pd4ini2fzqgfjtAx+ThsHWSlXeJVvq+Y7mrn8l+6JDv3/hAdpulFEsEOqj8S0HiCUKfycMjUDgZj3Yp169M1I9nsswP6X2C2OTkz6EFog14F7Zuh7ruw/7+1o/XE2uH7jSoevvvymsE2ESoYm1tAqtA6wf0MdewK0jrNDa11rpLROpDcxvrDjc5u7yiJ7VeOt09ioYNuP9UbjogkWiVWHUErouP5PSEedpuGuO/egexqjWiqE6hqF3nydw6ZfFeg74d5VbtfAXTVrb+PFjmn/socjP4A</diagram></mxfile>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2022-02-11T16:21:40.292Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" version="16.5.1" etag="S61S6DGSPqxKnjuDcn5Q" type="device"><diagram id="tKk4xVSdreBq-vZP-eoS" name="Page-1">1VrLcqM4FP0aL50CBNhetp2ku6vm0dVZTGcpgzCqlpEjROzk60cCiZfkiRMT48km6Op9dO5L8gSstoevDO7SP2mMyMRz4sME3E48z3WdUPyTkhclCWeLSrJhOFayRvCAX5ESOkpa4BjlnYacUsLxriuMaJahiHdkkDG67zZLKOnOuoMbZAgeIkhM6T845qneWLhoKr4hvEnV1HNvVlVsoW6sdpKnMKb7lgjcTcCKUcqrr+1hhYhET+NS9bs/UlsvjKGMn9IhqDo8Q1Kova0Iln2r1fEXveV8j7cEZqK0zDlkXB2KGB4sU8rwK804JEIiBeYq1MKeEePo0BKpVX1FdIs4exFNFCc8RyG0bwEMQiVMW+DWLaE61U09WLNx8aH2bschNHB4QFksJAw9FSg38WC0yGIke7tiw/sUc/Swg5Gs3QvWS1T4lqhqE4/gZDxUra82qeCZWdDxLOCEA2ADHAOcnyhC+BmV+OQ7muXoPIASwR7FKHcgwNyaFyNAtjDgQLGwIKqIyJru7xpBGwl0wPxX6/tRqtRNoEq3B6VhZeHlLXXLacEi1GG40N0N0q3UTuXa/hNShgjk8rw7htSCj+r6g2JpQvRR9E/C7WtstSjVq4dyvYzTuBp8HPlMzPJL4ysLLexlsQG/LGn03+au5TS8uXkcYPDjOJWuvsX6MaFq43mBy1h99ww9/SBbTFB8kx1aMTvKOhuLHfWxNfR4FNGXDbk/4FrEeh2gIMGbTHxHYsOCUWApTx+LWOqLqtjiOC7RFa4Ev8J1OZ6EaiftQbnuYDkJbu2MWhyhVB38qQEn7fjK5i+cGxDMQcdOTdVIZ5q/qdcdVq9Zj0CTJEfnGr46oPw/UDkYjcqeQeW/6HUwWR/g+UyeOjfefL7oUtk7j8qauuATqOua8eX3XFImRUyGmLCEgP7GovLeOCyW0u26yD8ShPtHED+KbD+QCRSRW95qYfFViwFclbYhV6ffgUW/w7H027XkswxBrmmUoX1DpoFTunezqY5rauW6YIai84Gr45MlT9HtRuCTeS/Q4VOR4acClR3EpnCCZczswPLmIOe0NF9Y2k+cVQbtetgX6JR6FPZdPk07jX2zq2LfzGDfTwTjo7xLGN1ePc0ueXHlGtsf/zLAwjot67ButHQPmDHySOne22CCYzcKHwmae1naZIiAeaojkkEjZnD5YHA4Ys9HI7Z5zTVO8ncCr8FQvHZuXDfwB+LyZ2R/lsvHWyodBCrjdSTdHReCkAhslmvh58INL2EuPSGVjm/PsAzJ+k1ylOeYysgrhhyOnTzOesmjbyaPrm/xhK47hCucGXu3GoXGDjx2zMBpRqFthCjjKd3QDJK2JRrmecNmamyR22imRs/cIvUPRiPBx8mnPSm+m5Cu44+ZgJrB7T0uE6dSWVXKJL/XUD4vyrfzKMXZ5lj4OzKaiz6Yl8RyYWCpraFU0Q4w4VNBdcU0L5X3i2jgurtDU6kt6N/SukY6460Opm9lcRaRIu4ejNGmnabgRFp2mskhhaLnwjmqDmKf1XqrXsaZ5incyc+MclQ+QTH6u/4FhtczSL5s0XqfeusJGhOyokT4EzkVSJLEi6J6klZNHK7DIFSTteSh+HPOffdStfPe1dA0dE02AQubZsG72SSKze9NKgfe/GwH3P0L</diagram></mxfile>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: What are cookies and sessions?
3+
slug: what-are-cookies-sessions
4+
tags:
5+
- Written
6+
- Concept
7+
categories:
8+
- Video
9+
section_number: 13
10+
excerpt: Learn about browser cookies and data stored per-cookie in sessions.
11+
draft: true
12+
---
13+
14+
# What are cookies and sessions?
15+
16+
## Cookies
17+
18+
A **cookie** is a piece of data that is:
19+
20+
- Generated by your Flask app (automatically, you don't have to do anything)
21+
- Stored by your web browser
22+
- Sent by the browser to the Flask app in every request the browser makes
23+
24+
But **why**? It seems wasteful for Flask to generate a piece of data and then have the browser send it that same piece of data every request!
25+
26+
The reason: so that Flask doesn't have to remember information about the browser.
27+
28+
If you want your Flask app to "remember" something about a browser, you can put that data in the cookie.
29+
30+
The most obvious example is authentication. When a user (who is on a browser) logs in, you can put in the cookie "logged in".
31+
32+
Because each browser has its own cookie, you can just check every cookie when a browser sends it. If the cookie says "logged in", you know that that browser is logged in.
33+
34+
It's even better if you store _who logged in_ in the cookie. Then when you receive the cookie, you know which user is making the request.
35+
36+
![Cookies and sessions diagram](./assets/cookies-and-sessions.jpg)
37+
38+
## Session
39+
40+
A **session** is a term for the stored data related to a particular client. In our example above, data stored in the cookie is the "session data".
41+
42+
But session data doesn't have to be stored in cookies. It could be stored in a database, using the cookie solely as an identifier.
43+
44+
Sessions stored in the browser are called "client-side sessions". When stored in a database, they are called "server-side sessions".
45+
46+
Cookies are not 100% safe, so any user can look at the contents of the cookie. That is why we shouldn't store anything in the cookie that we wouldn't want the user to see[^flask_cookie_security].
47+
48+
That's one of the primary reasons for using a database instead.
49+
50+
Here's a quick data flow diagram for server-side sessions (you can enlarge by opening in a new tab):
51+
52+
![Server-side cookies data diagram](./assets/server-side-cookies.jpg)
53+
54+
[^flask_cookie_security]: [Cookie security for Flask applications (Miguel Grinberg)](https://blog.miguelgrinberg.com/post/cookie-security-for-flask-applications)
97.4 KB
Loading
180 KB
Loading

0 commit comments

Comments
 (0)