轻谈flask登录拦截器《拦截部分接口域》

轻谈flask登录拦截器《拦截部分接口域》

释义

before_request :在请求收到之前绑定一个函数做一些事情。
after_request: 每一个请求之后绑定一个函数,如果请求没有异常。
teardown_request: 每一个请求之后绑定一个函数,即使遇到了异常。

response中的属性和方法如下
headers
status
status_code
data
get_json(force=False, silent=False, cache=True)
is_json
max_cookie_size
mimetype
set_cookie(key, value=”, max_age=None, expires=None, path=’/’, domain=None, secure=False, httponly=False, samesite=None)

新的改变

我对拦截器函数执行路径分段取有效的字段拦截,附上代码

@app.before_request
def before_action():
    a = request.path
    u = a.split('/')
    if len(u) >= 3:
        if u[2] == 'admin':
            if u[3] != 'login':
                if not 'username' in session:
                    session['newurl'] = request.path
                    return redirect(url_for('get_page_admin_login'))

代码解释

a = request.path 获取当前请求的路由(路径)
return redirect(url_for(‘get_page_admin_login’)) 页面重定向(函数名),这里有个误区,希望大家别踩坑,不是路由,本人试过很多次才发现是app路由下的def 函数名称

本文一部分借鉴于

https://blog.csdn.net/yingtian648/article/details/82179936

Flask应用中添加JWT(JSON Web Tokens)登录功能并配合Vue CLI前端以及Axios进行API请求拦截,你需要遵循以下步骤: 1. **安装依赖**: - Flask-JWT-Extended:这是一个方便处理JWT认证的Flask扩展,可以用于生成、验证令牌。 - Axios:在Vue项目中用于发送HTTP请求的库。 - Vue CLI插件:例如axios自动拦截插件`axios interceptor`。 安装命令: ```bash pip install flask-jwt-extended npm install axios @vue/cli-plugin-axios ``` 2. **配置Flask JWT**: - 在Flask应用中设置JWT配置,包括秘钥、过期时间等。 - 创建用户认证路由,如POST `/auth/login`,处理登录信息并返回JWT令牌。 ```python from flask_jwt_extended import JWTManager, create_access_token app = Flask(__name__) app.config['JWT_SECRET_KEY'] = 'your_secret_key' jwt = JWTManager(app) @app.route('/auth/login', methods=['POST']) def login(): # 处理登录验证逻辑... access_token = create_access_token(identity=user_id) return jsonify(access_token=access_token) ``` 3. **Vue CLI配置axios**: - 使用Vue CLI的`axios`插件创建拦截器,在每个请求前检查是否有有效的JWT。 - 如果有,则将token附加到headers中;如果没有,则发送请求失败。 ```javascript // vue.config.js 或者 main.js (推荐放在main.js) import axios from 'axios'; import { create } from 'axios-interceptor'; axios.interceptors.request.use( async config => { const token = localStorage.getItem('jwt'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, error => Promise.reject(error) ); ``` 4. **前端登录流程**: - 用户输入用户名和密码,通过Axios发送POST请求到服务器的登录路径。 - 登录成功后,保存JWT到本地存储(通常localStorage)。 - 设置Axios拦截器时,从本地获取JWT并附带在请求头中。 5. **错误处理**: - 未携带JWT或Token已过期时,可以在axios拦截器的响应错误处理器中捕获异常,显示适当的消息给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值