2015-07-28 2 views
1

Проблемы с получением подлинности при использовании контроля доступа к статическим ролям в моделях. Кажется, что все работает при использовании ACL с основными типами $ authenticated и $ every. Таким образом, средства контроля доступа функционируют так, как ожидалось, при входе в систему и выходили из системы. Поскольку ACL переносятся на статические роли, аутентификация не выполняется, и возвращается 401. Используются Loopback, встроенные в модели для ролей, ролевого сопоставления и пользователя. Я пробовал использовать ROLE и USER в качестве PrincipTypes.

Создание пользователя, роль и принципала с RoleMapping:Как выполнить аутентификацию с использованием статической роли в Loopback ACL

User.create({ 
    username: 'admin', 
    email: '[email protected]', 
    password: 'password', 
    active: true 
}, 
function (err, user) { 
    Role.create({ 
     name: 'Admin' 
    }, 
    function (err, role) { 
     if (err) throw err; 

     console.log('Created role:', role); 

     //make user an admin 
     role.principals.create({ 
      principalType: RoleMapping.USER, 
      //principalType: RoleMapping.ROLE, 
      principalId: user.id, 
      active: true 
     }, 
     function (err, principal) { 
      if (err) throw err; 

      console.log('Principal:', principal); 
     }); 
    }); 
}); 


клиентов Модель: запись

"name": "Customer", 
"base": "PersistedModel", 
"strict": false, 
"idInjection": false, 
"options": { 
    "validateUpsert": true 
}, 
"properties": { 
    "name": { 
     "type": "string", 
     "required": true 
    }, 
    "description": { 
     "type": "string" 
    }, 
    "active": { 
     "type": "boolean" 
    } 
}, 
"validations": [], 
"relations": { 
    "products": { 
     ......... 
    }, 
    "users": { 
     ......... 
    } 
}, 
"acls": [ 
    { 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$everyone", 
     "permission": "DENY" 
    }, 
    { 
     WORKS AS EXPECTED 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "$authenticated", 
     "permission": "ALLOW" 
    }, 
    { 
     RETURNS 401 AFTER LOGGING IN AS USER ASSIGNED TO ROLE 
     "accessType": "*", 
     "principalType": "ROLE", 
     "principalId": "Admin", 
     "permission": "ALLOW" 
    } 
], 
"methods": [] 

Пользователь создан:

"_id" : ObjectId("55b7c34d6033a33758038c3b"), 
"username" : "admin", 
"password" : ...., 
"email" : "[email protected]", 
"active" : true 


Роль записи:

"_id" : ObjectId("55b7c34d6033a33758038c3e"), 
"name" : "Admin", 
"created" : ISODate("2015-07-28T18:00:45.336Z"), 
"modified" : ISODate("2015-07-28T18:00:45.336Z") 


RoleMapping Запись:

"_id" : ObjectId("55b7c34d6033a33758038c41"), 
"principalType" : "USER", 
"principalId" : "55b7c34d6033a33758038c3b", 
"roleId" : ObjectId("55b7c34d6033a33758038c3e"), 
"active" : true 

Спасибо заранее за любую помощь!

+0

Проблема в том, что статическая роль не была зарегистрирована в качестве обработчика [роль] (http://apidocs.strongloop.com/loopback/ # role-registerresolver) – switcher

+0

Привет, у меня такая же проблема. Как вы это решили. не могли бы вы уточнить. Спасибо –

+1

Подумайте, что проблема была решена путем выполнения шагов, перечисленных в разделе «Динамические роли»: https://docs.strongloop.com/display/public/LB/Defining+and+using+roles – switcher

ответ

0

При определении пользователя в principalId, попробуйте попробовать вместо:

principalId: user[0].id, 
Смежные вопросы