【问题标题】:Can't redirect on js + Flask无法在 js + Flask 上重定向
【发布时间】:2020-06-19 13:44:54
【问题描述】:

我有用于注销的 Flask url

@app.route('/logout', methods = ['GET', 'POST'])
@login_required
def logout():

    leave_room(str(current_user.code), sid = current_user.name, namespace='/')
    socketio.emit('left_user', current_user.name, room=str(current_user.code))
    db.session.delete(Users.query.filter_by(name=current_user.name).first())
    db.session.commit()
    logout_user()

    flash('You are logged out', 'success')
    return redirect(url_for('login'))

如果我在 html 中点击下面的链接就可以了

<a class="navbar-brand text-center" href = '/logout'>Exit</a>

我在烧瓶房间里有 1-8 名玩家,游戏结束后,这个房间的所有玩家都必须登出并重定向到登录页面。我通过套接字从服务器任务发出,但下面的代码显示 401 Unauthorized 而不是登录页面

socket.on('leave', function(msg) {
    window.location.href = 'http://my.site.ip.adress:8080/logout';            
    });

如何解决这个问题?

【问题讨论】:

    标签: javascript python redirect flask-login


    【解决方案1】:

    我通过删除 @login_required 解决了这个问题

    现在 /logout 看起来像这样:

    @app.route('/logout', methods = ['GET', 'POST'])
    
        def logout():
    
            if current_user.is_anonymous:
                return redirect(url_for('login'))
            else:
                leave_room(str(current_user.code), sid = current_user.name, namespace='/')
                socketio.emit('left_user', current_user.name, room=str(current_user.code))
                db.session.delete(Users.query.filter_by(name=current_user.name).first())
                db.session.commit()
                logout_user()
    
            flash('You are logged out', 'success')
            return redirect(url_for('login'))
    

    【讨论】:

      猜你喜欢
      • 2020-08-22
      • 2011-07-24
      • 2013-02-13
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      相关资源
      最近更新 更多