2016-04-03 23 views
2

POST (Düğüm/Express) GET REDIRECT_PATH. Bir kullanıcıyı kapatma için doğru yolun ne olduğu konusunda çok endişeliyim.Kullanıcı çıkış: Benim kullanıcı kayıt işlemi yapılmasını (şu anda Pasaport olmadan) Expressjs için <a href="https://stormpath.com/" rel="nofollow">Stormpath</a> kullanıyorum

önce hep Stormpath explicitly requires a POST call to the /logout page Ancak GET yöntemiyle yaptı. elbette,

router.use(stormpath.getUser, function (req, res, next) { 
    if (req.user) { 
     req.session.useremail = req.user.email; 
    } 
    next(); 
}); 

Şimdi:

Ben kullanıcı Stormpath aracılığıyla kaydedilir, sadece bir kullanıcı menüsünü görüntülemek, bu benim router.js Express'te sahip süper basit ara yazılımdır Bu menüde Logout girişi var. Kullanıcımın bu bağlantıyı Çıkış'a tıklamasını istiyorum, ancak biliyorum ki <a href="/logout">Logout</a> gibi bağlantı bağlantıları kullanıldığında, bir GET isteği gönderilir, bir POST değil.

Bir POST bir GET isteğini yönlendirmek için yollar sayısız sayıda arıyordum var, ama bu kesinlikle yanlış bir yol olduğunu düşünüyoruz. Ayrıca bunun hiçbir anlamı gibi bir menü içinde form kullanmak yapacak hissediyorum:

<ul> 
    <li>User Profile</li> 
    <li>User Settings</li> 
    <form action="/logout" method="/post"> 
     <input type="submit"> 
    </form> 
</ul> 

Yani soru şu: sadece POST aracılığıyla bir kullanıcı çıkış için en iyi yolu nedir? Orada kötü birşey particularity menüsündeki formu olması hakkında ama sanmıyorum

+0

Merhabalar! [Stormpath] (https://stormpath.com) adresinde çalışıyorum ve değişikliği POST olarak uyguladım. Bu SO tartışma biz POST ile gitmek seçtim iyi bir özetidir: Ben

çözümünü uygulamaya Sonunda http://stackoverflow.com/questions/3521290/logout-get-or-post – robertjd

cevap

1

gerçekten muhtemelen bu yüzden böyle bir şey yapmak gerekir bir get isteği yapmak istiyorsanız: Yani

var request = require('request') 

app.get('/logout', function(req, res) { 

    // Send logout POST request to stormpath REST api 
    request.post({ 
     url: 'https://stormpath/logout/url', 
     form: { 
     key: 'value' 
     } 
    }, 
    function(err, httpResponse, body) { 
     // Check if there was an error logging the user-out 
     if (err) return res.send('Error logging out') 
     // If no error, user is logged out so redirect them or something 
     res.redirect('/') 
    }) 
}) 

senin ekspres app GET isteğini kabul eder ve daha sonra kullanıcıyı oturum açmak için kullanıcının adına POST isteği Stormpath yapar.

Eğer sadece req.logout() çağırabilir Bence Stormpath pasaport stratergy kullanarak geçmek yaparsanız.

+0

ama bu işaretler Soruyu gerçekten cevapladığı için geçerli bir cevap. – wiredmark

İlgili konular