我面临的问题与授权有关,
但是当我使用时 hasRole(this.relationshipManager,this.identity.getAccount(),role); 似乎总是回归,即使我授予另一个角色,例如。我授予ROLEA角色,当我要求ROLEB时,它返回true。我在PL快速入门中找到的grantRole方法不会被编译器识别,但它会识别出hasRole。
@LoggedIn
@RolesAllowed({"borrower"})
否则似乎PL运行良好,具有autenthication和identityManager。我的环境是WildFly 8.2,PK 2.7.Final,JPA。这些是我从基本模型映射的类:
<class>org.picketlink.idm.jpa.model.sample.simple.AttributedTypeEntity</class>
<class>org.picketlink.idm.jpa.model.sample.simple.RoleTypeEntity</class>
<class>org.picketlink.idm.jpa.model.sample.simple.IdentityTypeEntity</class>
<class>org.picketlink.idm.jpa.model.sample.simple.RelationshipTypeEntity</class<
<class>org.picketlink.idm.jpa.model.sample.simple.RelationshipIdentityTypeEntity</class>
<class>org.picketlink.idm.jpa.model.sample.simple.PartitionTypeEntity</class>
<class>org.picketlink.idm.jpa.model.sample.simple.AttributeTypeEntity</class>
答案 0 :(得分:0)
这可能不是最终答案,只是不适合评论。
一种激进的方法是手动调试整个事物。然而,略微不那么令人兴奋的方法是查看数据库内容。您没有提到您的数据库类型,但有很多工具可用于检查数据库内容。使用其中一个:
转到user_type_entity表(可能没有unserscores)并记下用户ID。
转到role_type_entity表并检查您的角色名称,每个只有一行。请注意角色的ID。
转到relationship_identity_type_entity表并查看具有相同owner_id的角色/受让人对(owner_id可能指向relationship_type_entity表中的某些Grant类型,但我们现在不需要将其解析)。
< / LI> 醇>
因此,关键问题是:您是否在那里为您的用户分配了不受欢迎的角色?如果是这样,你的函数完全按照它应该做的去做,你需要更仔细地查看你的代码,看看你是否在某处意外地批准了这个东西。
如果您的用户未被列为该角色的受让人,但hasRole返回true ...那么,您可能会遇到Picketlink本身的问题,并且可能需要调试该函数。
答案 1 :(得分:0)
我检查了数据库寄存器,发现我正在为用户分配所有角色。我还使用了HttpSecutiryConfiguration来解决授权问题。