Без дополнительного кода или информации, на которой маршрутизатор вы используете (генератор-угловой-fullstack поддерживает по умолчанию NgRouter и UIRouter) трудно дать полный ответ. Отвечая на ваш вопрос, я предполагаю, что у вас есть UI-маршрутизатор, и выяснили, как выполнять аутентификацию на стороне клиента в сгенерированном полноэкранном коде. Однако вам также потребуется реализовать что-то похожее на то, что они сделали в api своих пользователей, чтобы защитить конечные точки api на стороне сервера и вернуть ошибку 401/403.
'use strict';
var express = require('express');
var controller = require('./user.controller');
var config = require('../../config/environment');
var auth = require('../../auth/auth.service');
var router = express.Router();
router.get('/', auth.hasRole('admin'), controller.index);
router.delete('/:id', auth.hasRole('admin'), controller.destroy);
router.get('/me', auth.isAuthenticated(), controller.me);
router.put('/:id/password', auth.isAuthenticated(), controller.changePassword);
router.get('/:id', auth.isAuthenticated(), controller.show);
router.post('/', controller.create);
module.exports = router;
В приведенном выше коде (который можно найти, перейдя в папку сервера, затем папку апи, затем папку пользователя и глядя на index.js) вы увидите, что они называют несколько функций ,
Они вызывают auth.hasRole ('admin') и auth.isAuthenticated().
Это функции, которые можно найти в службе auth/role на стороне сервера в папке auth и в файле auth.service.js.
function hasRole(roleRequired) {
if (!roleRequired) throw new Error('Required role needs to be set');
return compose()
.use(isAuthenticated())
.use(function meetsRequirements(req, res, next) {
if (config.userRoles.indexOf(req.user.role) >= config.userRoles.indexOf(roleRequired)) {
next();
}
else {
res.status(403).send('Forbidden');
}
});
}
Я думаю, что важно понимать, как это работает на стороне сервера. Таким образом, если вы перейдете на localhost: 9000/admin и откройте консоль, вы увидите, что есть ошибка 401 или 403 в зависимости от того, вошли ли вы в систему и/или вошли в систему как пользователь admin.
предлагают создать 'resolve' в родительском состоянии всех государств, которые необходимо авторизироваться. Детские государства выиграли; t были доступны, если родитель выиграл; t разрешить – charlietfl