flask两种登录的方式

(1)自己实现,登陆后,将用户数据塞入到session中,在请求钩子before_request之前,可以将session中的数据放入到请求上下文g(全局变量)中去,然后实现全页面流通。退初登录时,将设置的session和g对象中的值置空

(2)使用 flask-login,简单步骤如下
2.1安装 pip install flask-login

2.2 主文件导入

form flask_login import LoginManager

2.3 主文件登录绑定app


login_manager = LoginManager()

login_manager.login_view = 'accounts.login'
login_manager.login_message = '请登录'
login_manager.login_message_category = 'danger'

login_manager.init_app(app)

2.4 用户模型增加相关属性

'''是否授权'''
@property
def is_authenticated(self):
   return True

'''用户是否激活'''
@property
def is_active(self):
   return self.status == constents.UserStatus.USER_ACTIVE.value

'''是否匿名'''
@property
def is_anonymous(self):
   return False

'''获取用户Id'''
def get_id(self):
   return '{}'.format(self.id)

2.5 主文件引入用户

@login_manager.user_loader
def load_user(user_id):
   return User.query.get(user_id)

2.6 登录视图函数中 将用户绑定进去
2.6.1 先导入 form flask_login import login_user
2.6.2 函数中相应位置绑定 login_user(user)

2.7 模板中使用

2.8 退出登录
2.8.1 先导入 from flask_login import logout_user
2.8.2 视图函数响应位置加上 logout_user()

2.9 强制视图方法使用前先登录
2.9.1 先导入 from flask_login import login_required
2.9.2 方法前加上装饰器 @login_required

2.10 登陆后如何跳转到登陆前的位置()
靠next参数, 进入某个页面因为未登录被打回登录页面后,会把当前页面的地址放入到域名中的next参数里。解决办法
2.10.1 登录视图函数中获取 参数

next_url = request.values.get('next',url_for('qa.index'))

2.10.2 页面传参加上这个

return render_template('login.html', form=form, next=next_url)

2.10.3 模板中 加隐藏数据

 <input type="hidden" value="{{ next }}" name="next">

2.10.4 视图文件中 跳转页面时跳转到这个地址中

return redirect(next_url)

Original: https://blog.csdn.net/qq_37454914/article/details/124737226
Author: 脑子忘家了
Title: flask两种登录的方式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/744803/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球