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.