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! |