我有一个烧瓶应用程序,我使用烧瓶登录,按照教程(没有什么花哨在这里)
localhost
而不是127.0.0.1
,则无效。from flask.ext.login import LoginManager
login_manager = LoginManager()
login_manager.session_protection = "strong"
login_manager.init_app(app)
login_manager.login_view = 'login'
def login():
error = None
form = LoginForm()
if request.method == 'POST':
user = db.users.find_one({"username": form.username.data})
pass_hash = generate_password_hash(form.password.data)
if user and User.validate_login( pass_hash, user['password'] ):
user_obj = User(user['username'])
session['logged_in'] = True
login_user(user_obj,remember=True)
flash("Logged in successfully", category='success')
print 'logged in: OK'
#return redirect(request.args.get("next") or url_for("index"))
return redirect( url_for("index"))
error = 'Invalid credentials'
return render_template('login.html', title='login', **locals())
好吧,当我输入错误密码时,它会出现“凭证无效”错误。当我正确输入密码时,我没有看到“登录成功”闪存,但在控制台上我看到“登录确定”。所以DB连接没有问题。但是我没有登录。例如,
g.user.is_authenticated()
在模板中给出false(这只发生在我的本地Linux上,另一方面托管和MAC成功登录用户)。
您在浏览器中保存会话的位置和方式是什么?
考虑存储在生产域example.com
的浏览器cookie中的会话,您也在本地配置了该会话(通过向/etc/hosts
文件添加覆盖)。
如果您的办公室服务器配置为使用不同的子域,例如office.example.com
,并且REMEMBER_COOKIE_DOMAIN
设置为example.com
,则办公室服务器将无法读取cookie。修复方法是使用跨域cookie:REMEMBER_COOKIE_DOMAIN=.example.com
(注意前面的点)。
参考:https://flask-login.readthedocs.org/en/latest/#cookie-settings
会议管理会议......
您可能在尝试访问开发服务器时尝试存储更多会话数据(例如,更长的服务器URL,调试数据等等),这在客户端进行会话管理时可能很难处理。