This shows you the differences between two versions of the page.
|
ii:labs:s2:02:tasks:03 [2023/04/01 18:23] florin.stancu created |
ii:labs:s2:02:tasks:03 [2024/03/17 18:24] (current) florin.stancu |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ==== 03. Authentication ==== | + | ==== 03. [30p] Firing up the Flask backend ==== |
| - | Now it's the time to add authentication to our website. | + | First, let's understand how Flask serves files: |
| - | We will use the built-in Flask client-side encrypted sessions feature, for which will need to take the following steps to enable: | + | * Download a random photo from the Internet (e.g., your favorite snake species) and place it into ''public/myimage.jpg'' (or use whatever name you wish, but keep this directory!); |
| + | * Start up the Flask server (''python3 server.py'') and point your browser to ''http://localhost:5000/public/myimage.jpg'', it should display your image. | ||
| + | * Copy/rename or download another image directly to your project's root, alongside ''server.py''; start the web server, point your browser to ''http://localhost:5000/myimage2.jpg'' -- it won't work... why? | ||
| - | * Import the ''session'' field from ''Flask''; | + | Now, we want to move the ''html'' page from earlier tasks to be served by the Flask web server: |
| - | * Configure a secret encryption key for the session cookies:<code python> | + | |
| - | # insert after initializing `app` | + | |
| - | app.config["SECRET_KEY"] = "<type some secret here>" | + | |
| - | </code> | + | |
| - | * Write the Flask functions for ''login.html'' and ''logout.html'' with the appropriate checks / actions. | + | |
| - | * Use the ''authenticated'' variable inside the Jinja template and conditionally display the user's status. | + | |
| + | * Copy the ''initial_design.html'' to the ''templates/'' directory (we're using the default Flask convention); | ||
| + | * Modify ''server.py'' to call ''render_template'' ([[https://flask.palletsprojects.com/en/3.0.x/quickstart/#rendering-templates|see official quickstart guide]]) and actually serve your HTML file. | ||
| + | * Fire it up! | ||
| + | |||
| + | <note important> | ||
| + | Don't forget to import the ''render_template'' symbol from the Flask library! | ||
| + | </note> | ||
| + | |||
| + | * Finally for this task, make a ''/google'' endpoint which automatically redirects to your favorite (or not) search engine! | ||