flask session_flask 拦截器与session的使用(微信报修小程序源码讲解三)

上一讲,我们学会了 flask 路由的基本功能和用法 , 若你还是不理解怎么使用,可以联系我,我会为你解答。

本文我们讲解一下 URL 拦截器和 session 的使用 , 后台管理的各个 URL 不应该在未登录的情况下被访问到,为了数据安全,只有登录之后才可以访问。

拦截器是做什么的? flask 中怎么实现对 url 请求的拦截 ?

1、拦截器:可以拦截所有URL请求,即只要有 url 请求 flask 应用,拦截器都可以监听到此 URL 请求 。

2、flask 中的拦截器使用 before_request 来完成 , 对所有 url 请求进行拦截 , 我们需要在启动程序(app.py)中进行拦截 。

before_request:在每个函数执行之前执行 ,当用户发来请求时 , 首先经过 before_request ,然后再到具体的路由 。

# 请求拦截器,对未登录的链接进行拦截,防止非法访问
@app.before_request
def before_user():
    if request.path == "/login":
        return None
    if request.path.startswith("/static"):
        return None
    if request.path.startswith("/api"):
        return None
    if not session.get("username"):
        return redirect("/login")

详细解释:

在 app.py 中 , 将 before_user 函数注册为 before_request ,即所有请求都要经过 before_user 方法 。

那么什么请求需要拦截 ? 什么请求不需要拦截呢 ?

1)静态资源不需要拦截 ,即 static 下的文件不需要拦截 ,static 目录下存放 css、js、以及图标图片等 。

2)登录地址不需要拦截 , 如果拦截登录地址 ,那么我们就无法打开后台登录页面 , 也就无法登录了 。这里我们的登录路由是 login ,所以 login 不需要拦截 。

3)api 相关的接口不需要拦截 , 拦截后小程序端将请求不到接口 。开放了api 接口任何应用随意访问 ,安全性不能保证 ,但是为了安全性可以对 api 接口进行 token 验证操作 。

什么情况下拦截请求 ?如何拦截 ? 如何判断用户是否登录 ?

需要拦截的请求 : 若用户未登录则跳转到后台登录页面 , 即 login 路由 。

不需要拦截的请求:执行 return None ,即直接跳转到对应请求的路由 。

判断用户是否登录:这里我们涉及到 session 的操作 ,若 session 中存在用户名则用户已经登录 , 反之用户未登录 ,未登录则被拦截的请求直接跳转到 登录路由 login 。

session 使用说明

以username 为例 ,添加 、获取 、删除、清空操作如下 :

添加 session :

session['username'] = 'JeenWang'

获取 session :

session.get('username')

删除 session :

session.pop('username')

清空所有 session :

session.clear()

总结:

通过本讲 , 你应该学会如何拦截用户请求 , 如何设置不需要拦截的请求如:/login 、/static、/api 等,如何判断用户是否登录,session 的详细使用。

如果你有任何问题 , 请关注公众号 JeenWang ,给我留言 ,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值