当前位置: 首页 > 知识库问答 >
问题:

调用和保存用户帐户自定义数据

茅星华
2023-03-14

我正在使用node.sdk、stormpath、express.js和passport.js为我的新网站制作一个用户帐户系统。所以我设置了一个自定义数据槽的帐户。我想知道,当他们注销时,我如何将新数据发布到这个自定义数据槽中,并在他们登录时检索它。我对使用node是新手,我不知道在他们登录时,我的代码应该放在哪里,也不知道如何访问“用户”帐户信息。据我所知,Passport.js正在处理身份验证,所以我可能看不到用户在stormpath API上搜索用户帐户url的电子邮件。也许我错过了什么??

router.post('/register', function(req, res) {

var username = req.body.username; var password = req.body.password;

// Grab user fields. if (!username || !password) { return res.render('register', { title: 'Register', error: 'Email and password required.' }); }

// Initialize our Stormpath client. var apiKey = new stormpath.ApiKey( process.env['STORMPATH_API_KEY_ID'], process.env['STORMPATH_API_KEY_SECRET'] ); var spClient = new stormpath.Client({ apiKey: apiKey });

var app = spClient.getApplication(process.env['STORMPATH_APP_HREF'], function(err, app) { if (err) throw err;

account = {

  givenName: 'John',
  surname: 'Smith',
  username: username,
  email: username,
  password: password,
  customData:{
    favList:'',
  },
};
app.createAccount(account, function (err, createdAccount) {

  if (err) {
    return res.render('register', {'title': 'Register', error: err.userMessage });
  } else {
    passport.authenticate('stormpath')(req, res, function () {
      return res.redirect('/home');
    });
  }
});
});

});

//呈现登录页面。router.get(“/login”,function(req,res){res.render(“login”,{title:“login”,error:req.flash(“error”)[0]});});

//验证用户身份。router.post(“/login”,passport.authenticate(“stormpath”,{successredirect:“/home”,failureredirect:“/login”,failureReflash:“oops I guise you neker account to get here..soz”,}));

//呈现仪表板页面。router.get(“/home”,function(req,res){if(!req.user req.user.status!==“enabled”){return res.redirect(“/login”);}

res.render(“home”,{title:“home”,user:req.user,});});

共有1个答案

丌官晔
2023-03-14

这是一个很棒的问题。谢天谢地,Passport API已经覆盖了您。您想要使用一个“自定义回调”函数,那么您就可以在该函数内部获得对用户的访问权限。对于Stormpath策略,user对象将是Stormpath帐户实例。但是,您需要重新实现当前作为选项传递的一些重定向逻辑。下面是Stormpath策略的示例:

app.post('/login', function(req, res, next) {
  passport.authenticate('stormpath', function(err, user, info) {
    if (err) {
      return next(err);
    }
    else if (user) {
      console.log('The account is: ', user);
      req.logIn(user, function(err) {
        if (err) {
          next(err);
        }else{
          res.redirect('/dashboard');
        }
      });
    }else{
      req.flash('error',info.message);
      res.redirect('/login');
    }
  })(req, res, next);
});

此自定义策略的文档可在以下位置找到:http://passportjs.org/guide/authenticate/

另一个注意事项:我建议在路由处理程序之外创建spClient。Stormpath客户端可以用于多个请求,每个进程只需要创建一次。

 类似资料:
  • 功能介绍 获取本APP的新用户自定义留存报告相关数据 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey 请求参数 此处仅列本接口特有参数,公共参数请参考报告级API说明 获取表格数据 参数名 参数类型 是否必须 描述 method string 是 retaineduser/a flag string 是 newcust

  • 但为了让它看起来像这样,我必须添加硬编码的大小限制,从而使它不具有自适应性。 这里是xml布局。 如何使此图像具有自适应性,并且仍然看起来像第一张图像?

  • 主要内容:函数定义函数是一组可重复使用的代码,可以在程序中的任何地方调用。这消除了一遍又一遍地编写相同的代码的需要。这使程序员能够将一个大程序划分成许多小的可管理的功能模块。 除了内置函数外,VBA还允许编写用户定义的函数。 在本章中,我们将学习如何在VBA中编写自己的函数。 函数定义 一个VBA函数可以有一个可选的语句。如果要从函数返回值,则可使用语句。 例如,可以在一个函数中传递两个数字,然后从函数中返回它们的

  • 用户自定义 本章讲介绍一些开发过程中常用需要自定义的东西。 一、自定义404页面 一般比较完整的站点,都会有自定义的404页面,既美观统一、又能保持访问者不至于因为错误页面而退出网站。 比如说duowan.com的404页面,是一个坦克大战的小游戏,可以在线玩并且成绩还会进入排行榜,和其他网友一较高下。 对404错误页面的建议: 建议不要使用PHP动态页面,纯HTML页面会比较好。 具特色,但不能

  • 我正在尝试使用Active Merchant和active_paypal_adaptive_paymentgem集成Paypal Adaptive结账。在用户注册期间,用户需要注册他/她的PayPal帐户才能在交易期间收到付款。 我已经为activemerchant设置了所有凭据。在paypal中注册用户帐户时,我遇到以下错误。 您正在登录此事务的API调用方的帐户。请更改您的登录信息,然后重试。

  • 我使用Woocommerce在我的Wordpress网站上销售数字下载。我已经能够使用一个插件来定制结账页面,这样客户只需给出他们的名字和姓氏以及电子邮件地址就可以购买产品。我想在客户信息页面上显示同样的内容,并编辑我的地址页面和帐户页面。 现在在帐户页面的底部,它正在从页面调用信息。它调用账单地址(名字和姓氏)和送货地址,这两个地址不显示,因为它们没有被要求输入送货地址。 我希望账单地址为“姓名