请稍等 ...
×

采纳答案成功!

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

7.4登录点击以后,不发生跳转

问题描述:按照老师的步骤一步步来,但是点击确定的时候依然没有发生跳转,通过app.logger.info输出了user_info显示为false,此外控制台输出了很多sqlalchemy的内容,自己比较小白,不知道这个是什么原因,估计着调用User表查询的时候输出的,但是里面的原理不太清楚,请求老师解惑!

图片描述

@app.before_request
def before_request():
    ignore_urls = app.config['IGNORE_URLS']
    ignore_check_login_urls = app.config['IGNORE_CHECK_LOGIN_URLS']
    path = request.path
    # 如果本身是静态页面则不需要判断
    pattern = re.compile("%s" % "|" .join(ignore_check_login_urls))
    if pattern.match(path):
        return
    # 如果本身是登录页面则不需要判断
    pattern = re.compile("%s" % "|".join(ignore_urls))
    if pattern.match(path):
        return
    user_info = check_login()
    app.logger.info(user_info)
    '''
    登录页面和static静态页面不需要登录
    '''
    if not user_info:
         return  redirect(UrlManager.buildUrl("/user/login"))
    return
'''
判断用户是否已经登录
'''
def check_login():
    cookies = request.cookies
    auth_cookie = cookies[app.config['AUTH_COOKIE_NAME']] if app.config['AUTH_COOKIE_NAME'] in cookies else ""
    '''
    打印auth_cookie,结果显示为:INFO in AuthInterceptors: ????#1
    '''
    app.logger.info(auth_cookie)
    if auth_cookie is None:
        return False

    auth_info = auth_cookie.split("#")#第一位为随机校验码,第二位为用户uid
    if len(auth_info) != 2:
        return  False
    '''
    从User表中查找对应uid下的记录
    '''
    app.logger.info(auth_info[1])
    try:
         user_info = User.query.filter_by(uid = auth_info[1]).first();
    except Exception:
        return  False

    if user_info == None:
        return  False

    if auth_cookie[0] != UserService.geneAuthCode(user_info):
        return  False

    return  user_info

控制台输出内容

登录用户名是xuzhihong
密码是123
以下的输出结果是本来Cookie就存在。

127.0.0.1 - - [14/Oct/2019 10:06:32] "GET /user/login HTTP/1.1" 200 -
[2019-10-14 10:06:32,253] INFO in AuthInterceptors: 228323ecf3fa793475c78aa1d0e7fec2#1
[2019-10-14 10:06:32,253] INFO in AuthInterceptors: 1
2019-10-14 10:06:32,465 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode'
2019-10-14 10:06:32,466 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:06:32,470 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'lower_case_table_names'
2019-10-14 10:06:32,470 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:06:32,475 INFO sqlalchemy.engine.base.Engine SELECT DATABASE()
2019-10-14 10:06:32,479 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:06:32,484 INFO sqlalchemy.engine.base.Engine show collation where `Charset` = 'utf8mb4' and `Collation` = 'utf8mb4_bin'
2019-10-14 10:06:32,489 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:06:32,492 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1
2019-10-14 10:06:32,498 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:06:32,499 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1
2019-10-14 10:06:32,499 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:06:32,501 INFO sqlalchemy.engine.base.Engine SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb
4_bin AS anon_1
2019-10-14 10:06:32,501 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:06:32,503 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2019-10-14 10:06:32,504 INFO sqlalchemy.engine.base.Engine SELECT user.uid AS user_uid, user.nickname AS user_nickname, user.mobile AS user_
mobile, user.email AS user_email, user.sex AS user_sex, user.avatar AS user_avatar, user.login_name AS user_login_name, user.login_pwd AS us
er_login_pwd, user.login_salt AS user_login_salt, user.status AS user_status, user.updated_time AS user_updated_time, user.created_time AS u
ser_created_time
FROM user
WHERE user.uid = %s
 LIMIT %s
2019-10-14 10:06:32,504 INFO sqlalchemy.engine.base.Engine ('1', 1)
[2019-10-14 10:06:32,506] INFO in AuthInterceptors: False
2019-10-14 10:06:32,507 INFO sqlalchemy.engine.base.Engine ROLLBACK
127.0.0.1 - - [14/Oct/2019 10:06:32] "GET / HTTP/1.1" 302 -
127.0.0.1 - - [14/Oct/2019 10:06:32] "GET /static/bootstrap/bootstrap.min.css.map HTTP/1.1" 404 -
2019-10-14 10:06:33,943 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2019-10-14 10:06:33,945 INFO sqlalchemy.engine.base.Engine SELECT user.uid AS user_uid, user.nickname AS user_nickname, user.mobile AS user_
mobile, user.email AS user_email, user.sex AS user_sex, user.avatar AS user_avatar, user.login_name AS user_login_name, user.login_pwd AS us
er_login_pwd, user.login_salt AS user_login_salt, user.status AS user_status, user.updated_time AS user_updated_time, user.created_time AS u
ser_created_time
FROM user
WHERE user.login_name = %s
 LIMIT %s
2019-10-14 10:06:33,945 INFO sqlalchemy.engine.base.Engine ('xuzhihong', 1)
2019-10-14 10:06:33,947 INFO sqlalchemy.engine.base.Engine ROLLBACK
127.0.0.1 - - [14/Oct/2019 10:06:33] "POST /user/login HTTP/1.1" 200 -

如果Cookie不存在的话,也就是我在浏览器端清除一次之后,下一次登录时候的输出结果和上文还不一样,是这样的,也就是不包含INFO in AuthInterceptors的那一部分

2019-10-14 10:26:15,418 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode'
2019-10-14 10:26:15,419 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:26:15,421 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'lower_case_table_names'
2019-10-14 10:26:15,422 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:26:15,425 INFO sqlalchemy.engine.base.Engine SELECT DATABASE()
2019-10-14 10:26:15,426 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:26:15,427 INFO sqlalchemy.engine.base.Engine show collation where `Charset` = 'utf8mb4' and `Collation` = 'utf8mb4_bin'
2019-10-14 10:26:15,427 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:26:15,429 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1
2019-10-14 10:26:15,429 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:26:15,430 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1
2019-10-14 10:26:15,430 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:26:15,431 INFO sqlalchemy.engine.base.Engine SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb
4_bin AS anon_1
2019-10-14 10:26:15,432 INFO sqlalchemy.engine.base.Engine ()
2019-10-14 10:26:15,433 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2019-10-14 10:26:15,435 INFO sqlalchemy.engine.base.Engine SELECT user.uid AS user_uid, user.nickname AS user_nickname, user.mobile AS user_
mobile, user.email AS user_email, user.sex AS user_sex, user.avatar AS user_avatar, user.login_name AS user_login_name, user.login_pwd AS us
er_login_pwd, user.login_salt AS user_login_salt, user.status AS user_status, user.updated_time AS user_updated_time, user.created_time AS u
ser_created_time
FROM user
WHERE user.login_name = %s
 LIMIT %s
2019-10-14 10:26:15,436 INFO sqlalchemy.engine.base.Engine ('xuzhihong', 1)
2019-10-14 10:26:15,437 INFO sqlalchemy.engine.base.Engine ROLLBACK
127.0.0.1 - - [14/Oct/2019 10:26:15] "POST /user/login HTTP/1.1" 200 -


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

2回答

编程浪子 2020-03-03 18:59:19

你好

请看如下截图

https://img1.sycdn.imooc.com//szimg/5e5e3883096632e418241344.jpg

0 回复 有任何疑惑可以回复我~
编程浪子 2019-10-15 00:51:30

你好

返回格式不对,后端要返回json格式,然后ajax才能处理

https://img1.sycdn.imooc.com//szimg/5da4a67f096bd07015280800.jpg

如下是源码对比的

https://img1.sycdn.imooc.com//szimg/5da4a78a09da48f115860748.jpg

0 回复 有任何疑惑可以回复我~
  • 老师,你给的原代码的返回格式也是 return user_info 啊,我不知道怎么修改
    回复 有任何疑惑可以回复我~ 2020-03-03 18:30:23
  • 如果你是看课程视频的,请仔细看,有修改的地方,不过过得比较快。我截图就是源代码。
    回复 有任何疑惑可以回复我~ 2020-03-03 18:56:18
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号