我是环回新手,不知道如何在环回中执行以下操作
我想在使用中间件的会话中设置访问令牌和其他值,因为我在loopback的服务器文件夹中找到了这个东西
"session": {},
在middleware.json中但不知道如何使用它,因为文档不多
我想在会话中间件中使用条件,如果我有会话值,那么继续扔到登录页面
注意我已经安装了这个npm install express-session
答案 0 :(得分:0)
你能对你想要的更具体一点吗?但我会解释一下如何处理认证会议,有两种本地方式可以对待它们;第一个是使用更多raw reading
拉动来建模api,第二个是使用JWT
与accessToken
和Passport.JS
对齐。
今天有Loopback 3.x
有两个例子基本上将raw reading
与app.post('/login', function(req, res)
一起使用,如果您的客户端已成功通过身份验证,则使用客户端的accessToken生成cookie,例如res.cookie('access_token', token.id, { signed: true , maxAge: 300000 }); res.set('X-Access-Token', token.id);
,最后如果您愿意,可以传输生成的令牌到你的网页:
res.render('home', {
email: req.body.email,
accessToken: token.id
});
现在使用Passport.JS,中间件用于保护所有连接和身份验证:
app.middleware('session:before', cookieParser(app.get('cookieSecret')));
app.middleware('session', session({
secret: 'Seal Playing Saxophone',
saveUninitialized: true,
resave: true,
}));
passportConfigurator.init();
经过身份验证的页面呈现支柱之一是var ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn;
,您可以使用此ensureLoggedIn('/login')
释放您的路线:
app.get('/auth/account', ensureLoggedIn('/login'), function(req, res, next) {
res.render('pages/loginProfiles', {
user: req.user,
url: req.url,
});
});
现在,如果你只想跳过这一切,并且已经设置了你的环境,只想创建一个route
来获取登录客户端的accessToken
,请使用下面的模板;
app.get('/session-details', function (req, res) {
var AccessToken = app.models.AccessToken;
AccessToken.findForRequest(req, {}, function (aux, accesstoken) {
// console.log(aux, accesstoken);
if (accesstoken == undefined) {
res.status(401);
res.send({
'Error': 'Unauthorized',
'Message': 'You need to be authenticated to access this endpoint'
});
} else {
var UserModel = app.models.user;
UserModel.findById(accesstoken.userId, function (err, user) {
// show current user logged in your console
console.log(user);
// setup http response
res.status(200);
// if you want to check the json in real time in the browser
res.json(user);
});
}
});
});
我希望我已经阐明了你的想法:]我在这里回答你的问题。