如何在 NodeJS 验证后使用 AngularJS 访问用户信息?
How can I access User Info with AngularJS after NodeJS verification?
我已经看到了一些与此相关的问题,但是我对 Angular 和 Node 都是新手,我正在努力寻找合适的解决方案。
我有这个代码,用于登录,我只能在通过身份验证后才能访问我的页面:
router.post('/login',
passport.authenticate('local',
{
successRedirect: '/',
failureRedirect: '/login',
failureFlash: false,
successFlash: false
}
));
router.all('*', ensureAuthenticated);
function ensureAuthenticated(req, res, next) {
console.log("in ensureAuth", req.isAuthenticated());
console.log("session data", req.session);
console.log("user data", req.user);
if (req.isAuthenticated())
{
return next();
}
res.redirect('/login');
}
本地护照认证我有returns一个对象在验证用户是否存在并允许登录后,如:
return passportDone(null, result.rows[0]);
其中 result.rows[0] 是我想要的用户信息。
我在前端拥有的是一个简单的 ng-submit 调用 "login(credentials)" 的表单,其凭据由 ng-model 在各自的字段(用户名和密码)中设置。
我的问题是如何 return 我想要的所有信息,例如 user_role、名称和内容,以便我可以在前端将其呈现为 {{user.name}} 例如?
信息需要在刷新后保留,所以 $scope 不是我读过的选项。
您可能想在这里做的是创建一个自定义路由来获取此信息。例如:“/我”。
在这条路线中,您可以提供您现在可能存储在会话变量中的信息。
根据您的应用程序如何使用身份验证,另一种解决方案是注入用户信息(例如,如果您登录并重定向到新页面,您可以将用户信息作为 js 注入到新页面中变量)或 return 如果您发送 ajax 登录请求并且没有被服务器重定向到新页面,则响应中的用户信息。
我希望您使用的是 passport.js
本地 authentication.I 建议在身份验证后将用户信息存储在 cookie 中作为 json webtoken 或使用其他一些 encryption.And 您应该公开一个 api(/api/is-authenticated) 用于检查用户是否通过身份验证,通过发送存储在 cookies.when 中的令牌来刷新或导航到其他路由使 api(/api/is-authenticated) 调用以检查该特定用户是否已经通过身份验证。
好的,我知道了。
我已经有了这项服务,但问题出在护照的成功重定向上。它 returns 你想要的 html 当它成功时,这很好。但是,因为我想要用户信息,所以这还不够。我所做的是创建一个 /account 路由 returns req.user 信息,然后我在前端处理它并用它形成一个 cookie。基本上发生的是:
post_login->verify_user->成功->get_account->form_cookie->render_html
我已经看到了一些与此相关的问题,但是我对 Angular 和 Node 都是新手,我正在努力寻找合适的解决方案。
我有这个代码,用于登录,我只能在通过身份验证后才能访问我的页面:
router.post('/login',
passport.authenticate('local',
{
successRedirect: '/',
failureRedirect: '/login',
failureFlash: false,
successFlash: false
}
));
router.all('*', ensureAuthenticated);
function ensureAuthenticated(req, res, next) {
console.log("in ensureAuth", req.isAuthenticated());
console.log("session data", req.session);
console.log("user data", req.user);
if (req.isAuthenticated())
{
return next();
}
res.redirect('/login');
}
本地护照认证我有returns一个对象在验证用户是否存在并允许登录后,如:
return passportDone(null, result.rows[0]);
其中 result.rows[0] 是我想要的用户信息。
我在前端拥有的是一个简单的 ng-submit 调用 "login(credentials)" 的表单,其凭据由 ng-model 在各自的字段(用户名和密码)中设置。
我的问题是如何 return 我想要的所有信息,例如 user_role、名称和内容,以便我可以在前端将其呈现为 {{user.name}} 例如?
信息需要在刷新后保留,所以 $scope 不是我读过的选项。
您可能想在这里做的是创建一个自定义路由来获取此信息。例如:“/我”。
在这条路线中,您可以提供您现在可能存储在会话变量中的信息。
根据您的应用程序如何使用身份验证,另一种解决方案是注入用户信息(例如,如果您登录并重定向到新页面,您可以将用户信息作为 js 注入到新页面中变量)或 return 如果您发送 ajax 登录请求并且没有被服务器重定向到新页面,则响应中的用户信息。
我希望您使用的是 passport.js
本地 authentication.I 建议在身份验证后将用户信息存储在 cookie 中作为 json webtoken 或使用其他一些 encryption.And 您应该公开一个 api(/api/is-authenticated) 用于检查用户是否通过身份验证,通过发送存储在 cookies.when 中的令牌来刷新或导航到其他路由使 api(/api/is-authenticated) 调用以检查该特定用户是否已经通过身份验证。
好的,我知道了。
我已经有了这项服务,但问题出在护照的成功重定向上。它 returns 你想要的 html 当它成功时,这很好。但是,因为我想要用户信息,所以这还不够。我所做的是创建一个 /account 路由 returns req.user 信息,然后我在前端处理它并用它形成一个 cookie。基本上发生的是:
post_login->verify_user->成功->get_account->form_cookie->render_html