2015-11-22 1 views
0

Я пытаюсь настроить простую аутентификацию с помощью Hapijs и его плагина hapi-auth-cookie, но даже если логин кажется успешным (прямо сейчас это макет логина), когда я пытаюсь получить доступ к другим конечным точкам API, я по-прежнему получаю несанкционированное исключение.Аутентификация с помощью сеанса hapi-auth-cookie, не задающего сеанс

Вот мой сервер:

server.register([inert, auth], function(err){ 
    server.auth.strategy('base', 'cookie', { 
    password: 'supersecretpassword', // cookie secret 
    cookie: 'app-cookie', // Cookie name 
    ttl: 24 * 60 * 60 * 1000 // Set session to 1 day 
    }); 

    server.auth.default({ 
    strategy: 'base' 
    }); 

    server.route(routes.endpoints); 
    //Start the server 
    server.start(function() { 
     console.log('Server running at:', server.info.uri); 
    }); 
}); 

А вот мой вход и выход функция:

exports.login = { 
    auth: false, 
    validate: { 
     payload: { 
     email: joi.string().email().required(), 
     password: joi.string().min(2).max(200).required() 
     } 
    }, 
    handler: function(request, reply) { 
     if(request.payload.email === '[email protected]' && request.payload.password === 'password') { 
      request.auth.session.set({id: 123, email: '[email protected]'}); 
      return reply('Login Successful'); 
     } else { 
      return reply(boom.unauthorized('Bad email or password')); 
     } 
    } 
}; 

exports.logout = { 
    auth: false, 
    handler: function(request, reply) { 
     request.auth.session.clear(); 
     return reply('Logout Successful!'); 
    } 
    }; 

Когда я ударил вход в конечную точке, он отвечает с "Login Успешным" сообщением, но, как Я сказал, не могу получить доступ к другим конечным точкам, которые не имеют «auth: false» в своей конфигурации.

Любая помощь будет глубоко оценена.

ответ

3

Сначала проверьте, создан ли файл cookie в браузере. После этого попытайтесь установить объект аутентификации, как это:

auth: {mode:'required',strategy:'base'} 

Другие режимы: попробовать, дополнительный. Установите опцию, если это не имеет значения, если пользователь аутентифицирован или нет. Установить необходимо до конечных точек, к которым вы хотите получить доступ только через аутентифицированных пользователей.

Если вы хотите обезопасить маршруты от ролей пользователей, вам нужно будет установить атрибут возможности для пользовательского объекта, установленного на сессии:

request.auth.session.set({id: 123, email: '[email protected]', scope:'admin'}); 

позже на Идент объекта маршрутов вы установите области действия :

auth: {scope: ['admin']} 

также установлен isSecure: false при создании стратегии. Таким образом, cookie отправляется клиенту.

+0

Caoba, capuccino – ZSnake

Смежные вопросы