user 对象的来源有两个方式:
方式一:webHosting 收到的 http 请求里面带有 sessionToken 的 header 信息,通过该信息能感知到 user 对象。
方式二:在 webHosting 服务端使用 AV.User.logIn 方法或者其他方法登录。
而 req.AV.user 对象只会在方式一的情况下出现。也可以这么理解:user 是 req 的一个属性(req.AV.user),也就是 user 的信息是在 req 上的(header 上的 sessionToken)。
如果是方式二,req 上是不会再有 user 信息,因为 user 对象是可以通过上下文获取的,比如你的代码:
success : function(result){
...
},
其中 result 就是 user 对象。所以建议需要使用 user 的地方,都使用 result 这个对象。如果有方法调用里需要用到 user,建议明确的方法传递。
当然,你也可以使用 AV.User.current() 来获取到当前用户,但是这个不推荐使用,因为在服务端 user 对象一般都是和 request 的生命周期绑定,而不是一个全局对象。
我们现在使用 domain 模块来做隔离,所以看起来 AV.User.current() 是一个全局变量,其实是每个 request 相互隔离的,所以不会有串号的风险。但有用户反馈这样可能仍然有问题(见这里)。所以我们不能保证永远支持在 LeanEngine 中通过 AV.User.current() 获取用户信息。