【问题标题】:How to send token in header and redirect in the same time: nodejs如何在标头中发送令牌并同时重定向:nodejs
【发布时间】:2018-10-18 11:56:20
【问题描述】:

我有以下 login-route,我想将 token 发送到 client,然后 重定向到另一个路线。这目前不起作用。

我该怎么做?

app.post('/login-user', (req, res) => {
        user.loginUser(req.body, (err, jResult) => {
            if (err) {
                res.send(jResult)
            }
            let token = jwt.sign({
                user: jResult,
            }, "supersecret")
            console.log(token)
            res.send(token).redirect('/LimeLINE/chatroom')
        })
    })

【问题讨论】:

    标签: node.js redirect routes


    【解决方案1】:

    我建议你使用 passport.js 中间件,它提供了一种在用户登录或登录失败时重定向用户的方法。

     app.post('/login-user', passport.authenticate('your_strategy_name', {
            successRedirect : '/limeLINE/chatroom', // redirect to the secure profile section
            failureRedirect : '/login-user', // redirect back to the signup page if there is an error
            failureFlash : true // allow flash messages
        }));
    

    编辑

    这是我的旧答案

    将其用作中间件:

    var logUser = function(){
        return function(req,res,next){
            user.loginUser(req.body, (err, jResult) => {
                if (err) {
                    res.send(jResult)
                }
                let token = jwt.sign({
                    user: jResult,
                }, "supersecret")
                console.log(token)
                /* Store your token */
                next();
            })
        }
    }
    
    app.post('/LimeLINE/chatroom', logUser(), (req, res) => {
        /* code for your chat*/
    })
    

    要强制执行此操作,而不在您的每条路由上调用中间件,请在 Express 路由器周围进行快速应用程序挖掘。

    【讨论】:

    • 但是我在前端的 ajax 调用中使用的路由 /login-user 之间的连接会发生什么?
    • @July333 哦,我没听懂这个问题,你问的是如何登录用户然后做事。我已经更新了我的答案
    猜你喜欢
    • 2022-09-28
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多