这里我是根据两个项目的实际情况做的总结,方法一(来自项目一)的登录用的是用户名(字符串)和密码,前后端不分离,用form表单传递数据;方法二用的是手机号和密码登录,前后端分离,以json格式传递数据,所以对登录数据的验证是不同的
方法一(利用插件 简单方便):
利用插件 flask_login 的 login_user, login_required, logout_user, current_user方法来实现用户的登入 检查登录 登出 获取当前登录用户。
首先 在view.py文件中做好导入工作:
form flask_login import login_user, login_required, logout_user, current_user
1 利用login_user实现登陆:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 from flask_login import login_user, login_required, logout_user, current_user 2 from app.controls.auth.forms import LoginForm 3 4 @auth.route('/login', methods=['GET', 'POST']) 5 def login(): 6 form = LoginForm() # 账户 密码表单 7 if form.validate_on_submit(): 8 user = User.query.filter_by(username=form.username.data).first() 9 if user is not None and user.verify_password(form.password.data): 10 login_user(user, form.remember_me.data) 11 return redirect(request.args.get('next') or url_for('user_mgm.index')) 12 flash('用户名或密码错误') 13 form.username.data = '' 14 form.password.data = '' 15 return render_template('/auth/login.html', form=form)
2 利用logout_user实现登出:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
@auth.route('/logout') @login_required def logout(): # 直接调用logout_user函数退出,里面实质封装了对session信息的清除 logout_user() return redirect(url_for('auth.login'))
3 直接利用login_required装饰器检查登录状态:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
@auth.route(