无法在 js + Flask 上重定向

Can't redirect on js + Flask

我在 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 中的 link 就可以了

<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';            
    });

如何解决这个麻烦?

我通过删除@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'))