简体   繁体   中英

Flask Login 'current_user` session has been expired

I'm building user authentication with Flask Login + Slack. In callback url, the app fetched successfully login(user) and current_user . But after redirecting, current_user has been expired...

My code:

app/auth.py

@bp.route('/callback', methods=["GET", "POST"])
def callback():
    auth_code = request.args['code']
    client = slack.WebClient(token="")
    oauth_info = client.oauth_access(
        client_id=client_id,
        client_secret=client_secret,
        code=auth_code
    )

    access_token = oauth_info['access_token']
    client = slack.WebClient(token=access_token)
    user_id = oauth_info['user_id']
    response = client.users_info(user=user_id)

    login_user(user)
    print(current_user)
    // <User 'XXXXXXXXXX'>
    return redirect(url_for('user.show', cat=user.uid))

In auth.py , current_user has been gotten successfully.

app/user.py

from flask_login import current_user

@bp.route('/<cat>')
def show(cat):
    print(current_user)
    // <flask_login.mixins.AnonymousUserMixin object at XXXXXX>
    return render_template('user/show.html)

In user.py , it failed to get current_user .

app/__init__.py

# login manager
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view =  "auth.callback"

@login_manager.user_loader
def load_user(user_id):
    try:
        return User.query.get(user_id)
    except:
        return None

I have missed set up current_user in LoginManager.

# login manager
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view =  "auth.callback"

@login_manager.user_loader
def load_user(user_id):
    user = db.find_user_by_id(user_id)
    return user

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM