eggjs / egg

🥚 Born to build better enterprise frameworks and apps with Node.js & Koa
https://eggjs.org
MIT License
18.9k stars 1.82k forks source link

egg-leancloud 插件如何读取登录用户信息? #782

Closed kainy closed 7 years ago

kainy commented 7 years ago

leancloud 官方的示例代码:

// 查看个人资料
app.get('/profile', function(req, res) {
  // 判断用户是否已经登录
  if (req.currentUser) {
    // 如果已经登录,发送当前登录用户信息。
    res.send(req.currentUser);
  } else {
    // 没有登录,跳转到登录页面。
    res.redirect('/login');
  }
});

在 controller 里这样写:

class HomeController extends app.Controller {
    * index(ctx) {
      console.log(ctx.request.currentUser);   // undefined
    }
  }

好些访问不到,求教是否调用方式有问题。

atian25 commented 7 years ago

leancloud 没怎么用过,还没想好怎么和 egg-passport 结合。

现在可以考虑直接挂载下他们提供的 Middleware:

https://leancloud.cn/docs/leanengine_webhosting_guide-node.html#用户状态管理

伪代码如下:

// app/middleware/leancloud-session.js
module.exports = (options, app) => {
  const config = Object.assign({
    framework: 'koa', 
    // secret: 'my secret', 
    // maxAge: 3600000, 
    // fetchUser: true,
  }, options)
  return app.AV.Cloud.CookieSession(config);
}

另外,还有如何和 egg-passport 的其他插件结合,这里还没啥思路:https://leancloud.cn/docs/leanstorage_guide-js.html#第三方账号登录

atian25 commented 7 years ago

cc @fengmk2 有什么建议不?

popomore commented 7 years ago

建议就是别搞这么,没精力

atian25 commented 7 years ago

@popomore 这个我们这边业务中用不到,肯定只能交给社区支撑了。

popomore commented 7 years ago

文档上可以加个 MAINTAINER REQUIRED

atian25 commented 7 years ago

https://github.com/eggjs/egg-leancloud/pull/2

kainy commented 7 years ago

好吧,等偶消化消化这颗 egg 后再回来研究研究。