首页 > 解决方案 > 我不想用快递发回表单数据,但确实如此,还是这样?

问题描述

我知道这个问题的标题可能听起来令人困惑,但我的问题实际上很简单。我有这两个用于/login获取和发布请求的处理程序:

loginRender(req, res) {
        let options = { title: 'Login', layout: 'auth.hbs' }
        res.render('login', options)
}
login (req,res){
        let user = Routes.findUser(req.body.username)
        let passwordCorrect = Routes.hashCompare(
            req.body.password,
            user.password
        )
        if (passwordCorrect) {
            let token = Routes.jwtsign(req.body.username)
            let refreshToken = Routes.jwtRefreshToken(req.body.username)
            Routes.authRedirect(res, token, refreshToken)
        } else {
            Routes.badRequestRedirect(res, '/login')
        }
}
authRedirect(res, token, refreshToken )
{
        let options = {
            cssPath: 'styles/querystyle.css',
        }
        res.cookie('access_token', `${token}`, { httpOnly: true })
        res.cookie('refresh_token', `${refreshToken}`, { httpOnly: true })
        res.status(200).render('query', options)
}
// app.use(urlencoded)
// app.use(cookieParser)
// app.post('/login', login)';
// app.get('/login', loginRender)

请忽略所有无关的东西。

所以,每次我完成登录时,我都会渲染我的网页,我实际上可以打开检查器并看到这个:

页面检查器

地址栏

我该如何解决?我希望我的用户被重定向到类似仪表板的页面,而不是以不安全的形式接收他的敏感数据。

UPD

还有一个 auth 中间件,它只在我们成功解析 jwt 的情况下附加 req.username ,并且与它有一点交互,但它不会出现在页面上,直到我通过在地址行中写入地址手动转到此页面。

标签: javascripthtmlnode.jsformsexpress

解决方案


如果您不将数据发送到 Express 服务器,那么您将无法在您的login函数中读取它,也无法验证用户身份。

用户可以在自己的浏览器中使用工具来检查他们输入的数据,这不是问题。

您需要在传输过程中对其进行加密(即使用 HTTPS 而不是纯 HTTP,至少在生产中),但您不必担心用户会找到自己的密码。


推荐阅读