我使用Parse.com和nodejs进行用户身份验证,但每个人都是同一个用户

lor*_*let 2 authentication node.js parse-platform

我正在使用节点解析包在服务器上执行用户身份验证.但是,一旦单个用户登录,网站的每个访问者都将作为该用户进行身份验证.

lor*_*let 6

由于parse和nodejs的性质,parse以这样的方式存储用户,使其对您的节点实例而不是客户端进行身份验证.要解决此问题,请使用解析,会话和Parse用户对象中的.become()方法提供的用户令牌.

我选择使用cookie会话进行会话.

当您的用户登录时:

parse = require('parse').Parse
parse.initialize([ your key ], [ your other key ])

parse.User.logIn(req.body.username, req.body.password, {
    success: function(user) {
        req.session.token = user._sessionToken
        [ whatever you want to do here]
    },
    error: function(error) {
        [ handle your error ]
    }
})
Run Code Online (Sandbox Code Playgroud)

在每个页面加载:

app.use(function(req, res, next) {
    parse = require('parse').Parse
    parse.initialize([ your key ], [ your other key ])
    parse.User.become(req.session.token ? req.session.token: "gibberish").then(function(user) { // If null is passed to .become() it will assume current(), which we don't want
        [ user is now the client authenticated user ]
    })
})
Run Code Online (Sandbox Code Playgroud)

登出:

parse = require('parse').Parse
parse.initialize([ your key ], [ your other key ])

parse.User.logOut()
req.session = null
Run Code Online (Sandbox Code Playgroud)

  • @asiammyself,使用user.getSessionToken(); 相反,为我工作. (2认同)