我在注册/登录过程中遇到麻烦。我正在使用Flask作为后端
这是设置:
当用户访问该站点时,他们看到一个注册页面,所有这些数据都存储在sqlite3数据库中。在按下创建帐户后,他们将被重定向到仪表板。下次他们访问该网站时,应该转到登录页面而不是注册页面。
但是我该如何处理?
我正在使用Login_Manager
这是我的注册/登录代码部分
def index():
return redirect('signup', code=302)
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user:
if check_password_hash(user.password, form.password.data):
login_user(user, remember=True)
return redirect(url_for('dashboard'))
else:
return 'invalid user'
#return form.username.data + ' ' + form.password.data
return render_template('login.html', form=form)
@app.route('/signup', methods=['GET', 'POST'])
def signup():
form = RegisterForm()
hashed_password = generate_password_hash(form.password.data, method='sha256')
if form.validate_on_submit():
new_user = User(username=form.username.data, password=hashed_password)
db.session.add(new_user)
db.session.commit()
return render_template('dashboard.html')
# return form.username.data + ' ' + form.password.data
return render_template('signup.html', form=form)
答案 0 :(得分:0)
正如评论中所提到的,cookie是必经之路。这是Flask中的一个简单实现:
添加以下其他导入语句:
from flask import request, make_response
更改def index()
,以检查用户是否具有带有用户名的cookie:
@app.route("/")
def index():
username = request.cookies.get('username')
if username:
return redirect('login', code=302)
return redirect('signup', code=302)
他们注册时,为他们创建一个cookie:
@app.route('/signup', methods=['GET', 'POST'])
def signup():
form = RegisterForm()
hashed_password = generate_password_hash(form.password.data, method='sha256')
if form.validate_on_submit():
new_user = User(username=form.username.data, password=hashed_password)
db.session.add(new_user)
db.session.commit()
这是新行。我们保存响应对象,以便可以向其中添加Cookie,然后将其返回。
resp = make_response(render_template('dashboard.html'))
resp.set_cookie('username', form.username.data)
return resp
这在quickstart under cookies中有记录。