Я создал приложение, используя Feathers. Я использую это приложение некоторое время. Он успешно размещает блог и другие веб-страницы. Тем не менее, я сейчас достиг точки, где мне нужно защитить некоторые из моих маршрутов. Например, я хочу иметь маршрут для моей административной активности (/ admin), но я хочу, чтобы определенные пользователи имели доступ.Перья - аутентификация и авторизация
Я знаю, что мне нужно использовать authentication и компоненты авторизации. Однако в это время я застрял на авторизации. Моя цель - аутентифицировать использование OAuth через Google. Однако, чтобы пройти мимо моей проверки подлинности, я был бы доволен просто использованием жестко закодированного имени пользователя/пароля только для того, чтобы заблокировать маршрут /admin
(нет, он не развернут).
На данный момент у меня есть
const app = feathers();
const routes = require('./routes');
app.configure(configuration(path.join(__dirname, '..')));
app.use(compress())
.options('*', cors())
.use(cors())
.use(favicon(path.join(app.get('public'), 'favicon.ico')))
.use('/public', serveStatic(app.get('public'), staticFileSettings))
.use(bodyParser.json())
.use(bodyParser.urlencoded({ extended: true }))
.configure(routes)
.configure(hooks())
.configure(rest())
.configure(socketio())
.configure(services)
.configure(middleware)
.configure(authentication())
;
// Setup the authentication strategy.
app.authenticate({
type: 'local',
'email': '[email protected]',
'password': 'admin'
}).then(function(result){
console.log('Authenticated!', result);
}).catch(function(error){
console.error('Error authenticating!', error);
});
Моя проблема, как только я добавить блок кода с app.authenticate вещью, я получаю сообщение об ошибке, когда я начинаю мое приложение. Ошибка говорит:
TypeError: app.authenticate is not a function
Если удалить app.authenticate(...);
Мое приложение начинает нормально, но ничего не заблокирована. В моем файле ./routes/index.js у меня есть:
app.use('/admin', function(req, res) {
res.render('admin/index.html', {});
});
Который, оказывает только штраф. Он не ограничивается только авторизованным и авторизованным пользователем. Что мне не хватает? При минимальном минимуме я пытаюсь понять, как пройти мимо ошибки app.authenticate
.
Что вы пытаетесь сделать? 'app.authenticate' доступен только на клиенте (' перья-аутентификация/клиент'). – Daff
В конечном счете, я пытаюсь запретить неавторизованным пользователям доступ к представлению на маршруте '/ admin'. По моему мнению, мне нужно сделать две вещи: 1) аутентифицировать пользователя (я хочу сделать это через логин OAuth Google) и 2) разрешить пользователю. Вопрос выше объясняет, как я застрял на # 1. – Gary