9

Đang thực hiện dự án với Flask, Gevent và ổ cắm web bằng môi trường máy chủ phát triển bình. Tôi đã sử dụng flask_login. Tại đâyBình - Cách lấy ID phiên

  1. làm cách nào để có được ID phiên duy nhất cho mỗi kết nối?
  2. Tôi muốn lưu trữ SessionID trong Cơ sở dữ liệu và xóa nó khi khách hàng ngắt kết nối.
  3. Làm thế nào để có được tổng kết nối hoạt động

    from flask_login import * 
    login_manager = LoginManager() 
    login_manager.setup_app(app) 
    
    @app.route("/", methods=["GET", "POST"]) 
    def login(): 
        login_user([username], remember):  
    
    @app.route("/logout") 
    @login_required 
    def logout(): 
        logout_user() 
    
+0

Bạn muốn có một phiên id cho mỗi _connection_ hoặc từng _logged trong user_? –

+0

hi Burhan, tôi cần cho mỗi người dùng đã đăng nhập. Cảm ơn anh trai trước. – user2104391

+0

Bạn đã sử dụng 'flask_login' như thế nào? Đăng một phần mã của bạn. –

Trả lời

17

Không có phiên id.

Phiên trong Flask chỉ đơn giản là trình bao bọc trên cookie. Những gì bạn lưu trên đó là chữ ký điện tử và được gửi dưới dạng cookie cho khách hàng. Khi bạn thực hiện một yêu cầu, cookie đó được gửi đến máy chủ của bạn và sau đó được xác minh và chuyển đổi trong một đối tượng Python.

AFAIK, Flask-Login lưu trên phiên ID người dùng.

Để có được tổng kết nối hoạt động, bạn có thể:

  1. Tại đăng nhập, tạo ra một id duy nhất và lưu nó trên phiên (flask.session['uid'] = uuid.uuid4(), ví dụ), sau đó lưu nó vào cơ sở dữ liệu của bạn.
  2. Khi đăng xuất, xóa id duy nhất đó khỏi phiên (del flask.session['uid']) và cũng từ cơ sở dữ liệu của bạn.
  3. Lấy số lượng phiên tích cực sử dụng phương pháp ưa thích của bạn (ORM/Nguyên SQL)
+2

Session id là nội dung của cookie và bạn có thể lấy nó từ session.sid –

-1

Các phiên id là trong: flask.session [ '_ id']

+0

'flask.session ['_ id']' được sử dụng bởi Flask-Login để thực hiện [Session Protection] (https: // flask-login). readthedocs.io/en/latest/#session-protection). Các phiên Flask "Chuẩn" không có SID. –

+0

Burhan đang sử dụng flask_login ... – Matt