res.redirect from POST

后端 未结 3 1659
礼貌的吻别
礼貌的吻别 2020-11-29 02:37

For some reason I cant redirect to /blog once my login is completed. In my login controller I have the following.

module.exports = {

    post: function(req         


        
相关标签:
3条回答
  • 2020-11-29 02:53

    POSTs are redirected to GETs. You can't redirect to a POST to a POST; you could forward it but that would be weird. I recommend adding logic to your GET route that will handle a logged in versus not logged in user.

    Also, 304 likely means your response is being cached by your browser because you used a 301 (permanent redirect, very bad on login, etc.; use 302).

    0 讨论(0)
  • 2020-11-29 02:56

    You can't make a redirection after an AJAX. You need to do it yourself in Javascript.

    server

    post: function(req, res) {
         var login = req.body['login'];          
         app.use(express.bodyParser());
    
    
         if (login && req.body['login']['password'] == "tom") {
            var loginPassword = req.body['login']['password'];
            console.log(loginPassword);
            console.log('Granted access');
            res.send({redirect: '/blog'});
    
         }
    
         ...
    
    }
    

    client

    $(document).ready ->
        $('#login-button').click () ->
            $.ajax
                url: '/login'
                type: 'POST'
                data: $('#Password').serialize()
                dataType: 'json'
                success: (data, textStatus, jqXHR) ->
                    if typeof data.redirect == 'string'
                        window.location = data.redirect
    

    This should work.

    0 讨论(0)
  • 2020-11-29 03:08

    You are missing return:

    return res.redirect('/');
    
    0 讨论(0)
提交回复
热议问题