python - Flask 登录“current_user”会话已过期
问题描述
我正在使用 Flask Login + Slack 构建用户身份验证。在回调 url 中,应用成功获取login(user)
并且current_user
. 但是重定向后,current_user
已经过期了...
我的代码:
应用程序/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))
中auth.py
,current_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)
在user.py
,它未能得到current_user
。
应用程序/__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
解决方案
我错过了current_user
在 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
推荐阅读
- html - Html:BarbaJS 滑块过渡
- ubuntu - NGINX Ingress 创建 NodePort 而不是 LoadBalancer
- python - Zipline 安装问题/交易演变的第一个回测错误
- c++ - 检查给定的整数组是否包含 0 值
- reactjs - 我将如何在 Typescript 中创建反应路由器?
- javascript - javaScript_Recursive_Function _function sumToOne(num)
- spring-boot - Netty如何测试使用客户端远程地址的处理程序
- java - 获取 Java SocketException
- ruby-on-rails - 单列时无法播种“UnknownAttributeError”,列复数时无法播种“NoMethodError”
- c++ - boost::allocate_unique 产生非默认可构造和不可移动可分配的 unique_ptrs