Информация за потребителя на Stormpath

добре, това е кодът на моя рутер и се опитвам да получа достъп до информацията за потребителския акаунт, когато той е на началната страница. Засега няма късмет... какво правя грешно тук?

// Render the dashboard page.
router.get('/home', function (req, res) {
  if (!req.user || req.user.status !== 'ENABLED') {
    return res.redirect('/login');
  }



  console.log('User:', req.user.email, 'just accessed the /home page!');


  //user: req.user

  res.render('home', {
    title: 'Home',
    user:req.user.username
    }

  );


});

person user61026    schedule 24.09.2014    source източник
comment
Здрасти. Можете ли да ни кажете с кое хранилище на Stormpath работите, като например stormpath-express-sample или stormpath-express? Благодаря!   -  person robertjd    schedule 24.09.2014
comment
Здравейте, неговата експресна проба на stormpath.   -  person user61026    schedule 25.09.2014


Отговори (2)


проблемът (изглежда) е, че нямате зададен междинен софтуер loginRequired на вашия маршрут. Трябва да промените сигнатурата на вашата функция на:

router.get('/home', stormpath.loginRequired, function(req, res) {
  ...
});

Това ще принуди потребителя да бъде оценен правилно =)

person rdegges    schedule 28.09.2014
comment
добре, не знам Потребителите могат да достигнат до тази зона само като влязат.. Просто не можах да накарам stormpath да върне никакви потребителски данни.. - person user61026; 28.09.2014
comment
Трябва да имате loginRequired нещата, за да може библиотеката stormpath да извлече потребителските данни за този маршрут. - person rdegges; 29.09.2014
comment
Искате ли да публикувате целия си код на приложението? Можете също така да ми го изпратите по имейл, ако искате: [email protected] - person rdegges; 01.10.2014

Вашият пример изглежда правилен, въпреки че бих присвоил целия потребителски обект в извикването за изобразяване (в момента просто предавате потребителското име).

Така че, ако поставите това в routes/index.js

// Render the 'home' page if logged in and account is not disabled
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
  });

});

Тогава изгледът в views/home.jade ще изглежда така:

html
  head
    title=title
  body
    p Hello, #{user.username}
person robertjd    schedule 25.09.2014
comment
може ли просто да ми дадете пример, който използва router.get('/home', function (req, res) { и потребителския обект, моля. трябва да има нещо малко, което ми липсва... - person user61026; 25.09.2014
comment
Можете да получите достъп до потребителското име директно с res.locals.user.username - person robertjd; 25.09.2014
comment
така че вашият code пример това се поставя във файла app.js? Тъй като бях поставил оригиналния си код в routes >> index.js - person user61026; 26.09.2014
comment
Ах! Грешка, показвах пример за stormpath-express, а не stormpath-express-sample. Съответно актуализирах този отговор. - person robertjd; 26.09.2014
comment
И така CustomData. Следвах същия принцип и мога да видя персонализираните си данни, когато се регистрирам... но изобразяването им с помощта на нефрит като другите няма да е план. Ето какво имам: res.render('home', { title: 'Home', user: req.user, cD: req.user.customData, }); - person user61026; 29.09.2014
comment
След това го извиках с p Hello, #{cd.item1} - person user61026; 29.09.2014
comment
Активирали ли сте автоматично разширяване за персонализирани данни? Вижте docs.stormpath.com/nodejs/express/ - person robertjd; 29.09.2014
comment
да var strategy = new StormpathStrategy({ expansions: 'customData' }); както споменах, виждам моите персонализирани данни в терминала, но не мога да ги накарам да изобразяват на екрана. - person user61026; 29.09.2014