使用flask登录,尝试在用户注册后登录用户。 user_login()适用于我的登录路由,但是在注册后,它会重定向到登录路由,而不是预期的主页。所以我的问题是,login_user()只能在'登录'路线?
这是我现在拥有的基本版本:
class User(flask_login.UserMixin):
def __init__(self, userName, email, firstName):
self.userName = userName
self.id = email
self.email = email
self.firstName = firstName
@login_manager.user_loader
def user_loader(email):
""" code to get userdata from database """
user = User(userName,email,firstName)
return user
@app.route('/register', methods=['GET','POST'])
def register():
if request.method == 'GET':
return render_template('register.html')
elif request.method == 'POST':
""" code for creating user from form data """
#create session for user
user = User(userName,email,firstName)
flask_login.login_user(user)
return redirect(url_for('home'))
@app.route('/login', methods=['GET','POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
elif request.method == 'POST':
""" code for authorizing a user """
user = User(userName,email,firstName)
flask_login.login_user(user)
return flask.redirect(flask.url_for('home'))
else:
return render_template('login.html')
@app.route('/home')
@flask_login.login_required
def home():
return render_template('home.html')
更新: 我没有在我的user_loader
中正确加载我的用户答案 0 :(得分:1)
注册用户后,您将直接重定向到/home
路由,这需要用户登录。但是你还没有在这个阶段实际登录,只创建了用户。
您应该在创建用户后在/register
路线中添加以下内容:
flask_login.login_user(user)