Не могли бы вы быть немного более конкретным о том, что вы хотите?но я объясню немного о том, как обрабатываются сеансы аутентификации, есть два родных способа, которыми вы все это обрабатываете;Первый будет использовать более raw reading
тягу для моделирования вашего API, а второй будет использовать JWT
в соответствии с accessToken
и Passport.JS
.
Есть два доступных примерасегодня с Loopback 3.x
В основном, используя raw reading
с app.post('/login', function(req, res)
, затем, если ваш клиент успешно прошел аутентификацию, вы генерируете cookie, используя accessToken вашего клиента, например, 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);
});
}
});
});
Надеюсь, я высветил ваши идеи:] Я здесь, чтобы ответить на ваши вопросы.