flask两种登录的方式

flask两种登录的方式

主要介绍flak-login,参考官网(https://flask-login.readthedocs.io/en/latest/

(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'
# 绑定app
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 模板中使用

{% if current_user.is_authenticated %}
 {{ current_user.nickname }}
{% endif %}

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)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值