跳至主要內容

Max行銷誌

行銷、數據分析、與 Python

  • Python
  • Git
  • Flask
  • Crawler
  • GTM
  • Data Analytics
  • Dashboard
  • About

Max行銷誌

行銷、數據分析、與 Python

  • Python
  • Git
  • Flask
  • Crawler
  • GTM
  • Data Analytics
  • Dashboard
  • About

Max行銷誌

行銷、數據分析、與 Python

[Flask教學] Flask 如何檢測使用者是否登入?

By MaxAll posts、Python Flask 教學 最後更新時間 17 6 月, 2020
flask_login_check_photo

利用內建函數app.before_request 搭配 session 在每次頁面載入前檢測使用者狀態,如果你在學習Python Flask網頁,希望本篇教學對你有幫助。

Table

  • 什麼是 Flask app.before_request?
  • 使用者登入時設定
  • 使用者登出時設定

什麼是 Flask app.before_request?

  1. 我們利用falsk內建的函數 @app.before_request,可以在每次在入頁面前執行一件事情
  2. 首先設定request.path是在login登入頁或者是static/js或css相關頁面的時候,不用執行此檢測(return None)
  3. 其他頁面利用session.get(‘session_id’)的方式,確認是否有使用者的session存在,不存在的話將使用者導回登入頁(return redirect(‘/’))

關於Flask session的使用方法,可以參考這篇[Flask教學] Flask Session使用方法和介紹,當然接下來也會有詳細的介紹

1
2
3
4
5
6
7
8
9
10
11
@app.before_request
def login_required():
    if request.path in ['','/','/google_sign_in'] or '/static/' in request.path:
        return None
    session.permanent = True
    user=session.get('session_id')
    g.user = user
 
    if user==None:
        print(user)
        return redirect('/')

使用者登入時設定

  1. 以Google login為例,當使用者登入時把前端傳過來的email設定為session (session[‘session_id’] = id_info[’email’])

關於flask google login完整介紹可以參考:[Flask教學] 5分鐘上手Flask Google login登入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@app.route('/google_sign_in', methods=['POST'])
def google_sign_in():
    token = request.json['id_token']
 
    try:
        # Specify the GOOGLE_OAUTH2_CLIENT_ID of the app that accesses the backend:
        id_info = id_token.verify_oauth2_token(
            token,
            requests.Request(),
            GOOGLE_OAUTH2_CLIENT_ID
        )
        session['session_id'] = id_info['email']
        session.permanent = True
        
        if id_info['iss'] not in ['accounts.google.com', 'https://accounts.google.com']:
            print('IWrong issuer')
            raise ValueError('Wrong issuer.')
    except Exception as e:
        # Invalid token
        print('Invalid token--------',e)
        raise ValueError('Invalid token')
 
    return jsonify({}), 200

使用者登出時設定

這樣使用者Session過期時才不會因為沒有登入,就可以直接進入頁面!

1
2
3
4
5
# sign_out
@app.route("/sign_out", methods=['GET'])
def sign_out():
    session['session_id'] = None
    return redirect('/')

關於 Flask 教學的延伸閱讀:

▍關於 Flask 教學系列目錄:

  • 【Flask教學系列】實作 Flask 教學目錄

▍其他 Flask 相關教學:

  • 【Flask教學系列】Flask 為甚麼需要 WSGI 與 Nginx
  • 【Flask教學系列】Flask-SQLAlchemy 資料庫連線&設定入門 (一)
  • 【Flask教學系列】Flask-JWT-Extended 實作
  • 【Flask教學系列】實作 Flask CORS
  • 【Flask教學系列】實作 Flask CSRF Protection
  • 【Flask教學系列】實作 Dockerfile + nginx + ssl + Flask 教學 (附GitHub完整程式)

[Flask教學] Python Flask如何檢測使用者是否登入結束囉,感謝收看,有關Max行銷誌的最新文章,都會發佈在Max的Facebook粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

flaskflask google loginflask google login checkflask教學

文章導覽

[Flask教學] Flask Session 使用方法和介紹
【Python教學】pip install 指令大全

嗨,我是站長 Max!

每篇文章都是花了不少時間整理,希望有幫助到你 😀

➤ 閱讀更多「關於作者」

Category

  • Python 從 0 開始教學手冊
  • Git 學習路線指南
  • Flask 入門指南
  • 進階爬蟲
  • 走在數據工程師的路上
  • 數據視覺化 Looker Studio
  • 數據追蹤學 GTM

Hot Topic

  • 蝦皮賣家競品分析
  • 電商小細節:頁面優化經驗談
  • 電商數據儀表板
  • 從部落格學數據分析
  • Python 一切皆為物件,到底什麼是物件 Object ?
  • Git 時光機 – 回復版本的 2 種方法
  • 過去一年,下班後的學習

List

Tags

  • All posts (169)
  • Crypto (6)
  • Git 教學 (10)
  • Google Tag Manager 教學 (19)
  • Looker Studio 教學 (10)
  • Python Django 教學 (3)
  • Python Flask 教學 (36)
  • Python 基礎教學 (28)
  • Python 數據分析 (25)
  • Python 機器學習 (6)
  • Python 爬蟲教學 (15)
  • Python 資料庫教學 (12)
  • Swift 教學 (5)

About

  • Made with ☕ by Max

Archives

  • All posts
  • 2024
  • 2023 (22 pages)
  • 2022 (20 pages)
  • 2021 (17 pages)
  • 2020 (48 pages)
  • 2019 (35 pages)
  • 2018 (31 pages)

Explore

  • Python
  • Git
  • Flask
  • Crawler
  • Data Analytics
  • Dashboard
  • GTM
  • Max Newsletter
© 2025 Max行銷誌.