Bird
0
0

You want to use before_request in Flask to verify if a user is authenticated by checking session['user_id']. If not authenticated, redirect to /login. Which snippet correctly implements this?

hard📝 Application Q8 of 15
Flask - Middleware and Extensions
You want to use before_request in Flask to verify if a user is authenticated by checking session['user_id']. If not authenticated, redirect to /login. Which snippet correctly implements this?
A<pre>from flask import Flask, session, redirect, url_for app = Flask(__name__) @app.before_request def check_login(): if 'user_id' not in session: return redirect(url_for('login'))</pre>
B<pre>@app.before_request() def check_login(): if session['user_id'] is None: redirect('/login')</pre>
C<pre>@app.before_request def check_login(): if session.get('user_id'): return redirect('/login')</pre>
D<pre>@app.before_request def check_login(): if 'user_id' in session: pass else: abort(401)</pre>
Step-by-Step Solution
Solution:
  1. Step 1: Check decorator syntax

    from flask import Flask, session, redirect, url_for
    app = Flask(__name__)
    
    @app.before_request
    def check_login():
        if 'user_id' not in session:
            return redirect(url_for('login'))
    correctly uses @app.before_request without parentheses.
  2. Step 2: Verify session check and redirect

    from flask import Flask, session, redirect, url_for
    app = Flask(__name__)
    
    @app.before_request
    def check_login():
        if 'user_id' not in session:
            return redirect(url_for('login'))
    checks if 'user_id' is missing and returns a redirect response properly.
  3. Step 3: Analyze other options

    @app.before_request()
    def check_login():
        if session['user_id'] is None:
            redirect('/login')
    uses parentheses incorrectly and does not return redirect.
    @app.before_request
    def check_login():
        if session.get('user_id'):
            return redirect('/login')
    redirects if user_id exists, which is wrong logic.
    @app.before_request
    def check_login():
        if 'user_id' in session:
            pass
        else:
            abort(401)
    aborts with 401 instead of redirecting.
  4. Final Answer:

    Option A -> Option A
  5. Quick Check:

    Return redirect to stop request processing. [OK]
Quick Trick: Return redirect in before_request to halt and redirect [OK]
Common Mistakes:
MISTAKES
  • Using parentheses in decorator
  • Not returning redirect response
  • Incorrect logic for authentication check
  • Using abort instead of redirect

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More Flask Quizzes