当我发布到flask端点时:
@app.route('/api/v1/logout', methods=['POST','GET'])
def logout():
logout_user()
return jsonify(status=200, message='User has been successfully logged out.')下次尝试登录时出现错误
InvalidRequestError: Object '<User at 0x7f09b4831c90>' is already attached to session '1' (this is '4')我想知道如何使用ajax安全地注销和登录。
编辑- angularjs登录控制器:
LoginController: function ($scope, $http, authService, $location) {
$scope.submit = function() {
console.log('in logincontroller')
$http.defaults.headers.post['X-CSRFToken'] = csrf_token;
$http.defaults.headers.common['Content-Type'] = 'application/json'
//debugger;
$http.post(
'/login',
JSON.stringify({ email: $scope.email, password: $scope.password })
).success(
function(data) {
if (data.meta){
var status_code = data.meta.code;
}
else{
var status_code = data.status;
}
if (status_code == 200){
$.cookie('email', $scope.email, { expires: 7 });
$.cookie('auth_token', data.authentication_token, { expires: 7 });
$http.defaults.headers.common['Authentication-Token'] = data.authentication_token;
authService.loginConfirmed();
$location.path("/dashboard");
}
else{
//form stuff
}
}
).error(
function(data) {
alert('LoginController submit error');
$scope.errorMsg = data.reason;
//debugger;
}
);
};
}发布于 2014-01-08 06:51:55
我猜您必须在结束时重定向才能退出现有会话
@app.route('/logout')
def logout():
# remove the username from the session if it's there
session.pop('username', None)
return redirect(url_for('index'))发布于 2014-01-17 10:58:24
你做这件事大错特错了。
由于您没有提供登录方法,我从错误日志中猜测您在会话中存储了一个用户模型。这是完全错误的。
我的建议是将用户的id存储在会话中。例如:
def login_user(user):
session['user_id'] = user.id如果您需要知道当前用户:
def get_current_user():
return User.get(session['user_id'])提出正确的问题,这样人们才能帮助你。
https://stackoverflow.com/questions/20983588
复制相似问题