请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

拦截器到底什么时候执行拦截

拦截器的定义是在发起请求之前执行的函数,这样理解对吧老师,但是这个请求是指的什么请求呢?

以删除以后立即返回登录页面这一拦截过程为例,拦截函数的具体执行时间是哪一步呢?
1、JS文件执行Ajax请求

    ops:function (act, id) {
        var callback = {
            'ok':function () {
                //Ajax调用传递给后端
                $.ajax({
                url:common_ops.buildUrl('/account/ops'),
                type:'POST',
                data:{
                    act:act,
                    id:id
                },
                dataType:'json',
                success:function (res) {
                    var callback = null;
                    if(res.code == 200)
                    {
                        callback=function () {
                            window.location.href = window.location.href;//刷新当前页面
                        }
                    }
                    common_ops.alert(res.msg, callback);
                }
        })
            },
            'cancel':null
        };
        common_ops.confirm((act == "remove" ? "确定删除?":"确定恢复"),callback)
    }
};

2、后端进行处理并返回结果

@route_account.route( "/ops" , methods = ["GET", "POST"])
def ops():
    resq = {'code': 200, 'msg': '操作成功~~', 'data': {}}
    req = request.values

    id= req['id'] if 'id' in req else 0
    act = req['act'] if 'act' in req else ''

    info = User.query.filter_by(uid=id).first()

    if not info:
        resq['code'] = -1
        resq['msg'] = '制定账号不存在~'
        return jsonify(resq)
    if act == 'remove':
        info.status = 0
    elif act == 'recover':
        info.status = 1
    #更新操作事件
    info.update_time = getCurrentDate()
    #更新数据库
    db.session.add(info)
    db.session.commit()
    return jsonify(resq)

正在回答 回答被采纳积分+3

2回答

编程浪子 2019-10-25 13:52:54

你好

首先你的明白拦截器是来做什么的?拦截器只做公共的功能


你什么删除都是这个属于业务功能,和拦截器半毛钱关系都没有,我们本次课程使用拦截器主要就是用于判断登录

0 回复 有任何疑惑可以回复我~
  • 提问者 就叫校长吧 #1
    老师我说的删除,是在账户列表里面删除了当前用户,那么后端将用户状态设置为0(也就是无效状态),然后拦截器判断用户为0后,那么就会立即跳转到登录页面。
    
    
    我想问的是,在这一过程中,拦截器是怎么被触发的
    回复 有任何疑惑可以回复我~ 2019-10-28 13:01:35
  • 编程浪子 回复 提问者 就叫校长吧 #2
    flask 框架自动触发 before_request 的装饰器的函数
    回复 有任何疑惑可以回复我~ 2019-10-29 10:40:26
编程浪子 2019-10-24 19:44:27

你好

所有的http请求

0 回复 有任何疑惑可以回复我~
  • 提问者 就叫校长吧 #1
    那么老师,也就是在Ajax里面post请求之前,先通过了拦截器。但是如何实现刚刚点击删除就被拦截到?点击删除的时候,发起了HTTP请求,拦截器执行,但是状态改变是发生在HTTP请求以后啊。
    回复 有任何疑惑可以回复我~ 2019-10-25 00:13:47
  • 提问者 就叫校长吧 #2
    其实我就想理一下这个思路,针对删除账户而言,具体拦截的是哪一段代码?
    回复 有任何疑惑可以回复我~ 2019-10-25 00:15:38
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信