2012-07-19 12 views
25

Herhangi bir nedenle oturum açtıktan sonra/blog'a yönlendiremiyorum. Giriş kontrol cihazımda aşağıdakilere sahibim.res.redirect POST aracılığıyla

module.exports = { 

    post: function(req, res) { 
     var login = req.body['login'];      

     if (login && req.body['login']['password'] == "password") { 
      console.log('Granted access'); 
      res.send({redirect: '/blog'}); 

     } 

     else { 
      console.log('wrong password'); 
      res.redirect('back'); 

     } 

    } 

}; 

$(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 

Bir AJAX sonra yeniden yönlendirme yapamaz kodu

+0

bunu yaptığını tam olarak ne söyleyebilir? Hangi cevap kodunu alırsınız? Bir şey için, her bir istek süreci sırasında değil, başlangıç ​​uygulama yükü sırasında ara katman yazılımını ('app.use (express.bodyParser())') kurmanız gerekir. –

+0

Güncelledim. Hiç bir yanıt alamıyorum ve app.js (app.use) (express.bodyParser()) uygulama yüküm içinde server.js içinde var. – lostAstronaut

+0

Bir 200 yanıt kodu oluşturuyorsunuz, bu yüzden bir yanıt almalısınız. boş vücut olsa da. Giriş denetleyicisinin 'post' işlevinin çağrıldığından emin misiniz? Bu konsol.log' ifadelerinden gelen çıktıyı görüyor musunuz? Eğer/else olursa olsun, her durumda 'res.redirect' diyorsunuz, bu yüzden 301 yanıt kodunu almalısınız. Bu, bana tamamen, talebe cevap veren farklı bir rota işleyicisinin olduğuna inanmamı sağlıyor. –

cevap

56

çalışma güncellendi jquery ajax. Javascript'te kendiniz yapmalısınız.

sunucu

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

    } 

    ... 

} 

istemci

$(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 

Bu çalışması gerekir.

+0

düzeltmek için teşekkürler Bir adam çalıştı, teşekkürler. Sunucudan yönlendirebilir misiniz? Blog’a gittiğimi ve oturum çerezinin kontrol olmadığını söyle. Res.redirect veya başka bir şeyle giriş yapmak için tekrar yönlendirebilir misiniz? – lostAstronaut

+0

Cevabınız için teşekkür ederiz. 3 gün boyunca kafamı neden ajax'ten değil, tarayıcı isabetlerinden kaynaklandığını söyledim. – Tarun

4

POST'ler GET'lere yönlendirilir. POST’a bir POST’a yönlendiremezsiniz; iletebilirsin ama bu garip olurdu. GET rotanıza, oturum açmamış bir kullanıcıyla oturum açmamanız için mantık eklemenizi öneririm.

Ayrıca, büyük olasılıkla 304, tarayıcınız tarafından yanıtınızın önbelleğe alındığı anlamına gelir, çünkü 301 (kalıcı yeniden yönlendirme, girişte çok kötü, vb.; 302 kullanın) kullanılır.

-2

Sen return eksik:

return res.redirect('/'); 
+0

Benim için çalışmadı –

+0

Bu 5 yıl önce soruldu, Charles doğruydu – lostAstronaut