You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@shiro.apache.org by kshiraly <ks...@gmail.com> on 2012/06/01 04:06:11 UTC
Wildcard permission with multiple actions - what am I doing wrong?
Hi,
Wildcard permission with multiple actions are not working for me.
I have a permission defined like this in shiro.ini:
courses:delete,update,create:courseA
I'm observing that Subject.isPermitted("courses:[action]:courseA")
returns true only for first action ("delete"), but not for subsequent
actions.
If I change the order of actions, it returns true only for the new first
action, not for other actions.
Can someone here tell me where's the mistake? I'm using Shiro 1.2
("shiro-all-1.2.0.jar").
shiro.ini:
[users]
guest = guest, guest
[roles]
guest = courses:delete,update,create:courseA
Application Code:
public class ShiroExplorer {
public static void main(String[] args) {
IniSecurityManagerFactory securityManagerFactory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager secMgr = securityManagerFactory.createInstance();
SecurityUtils.setSecurityManager(secMgr);
Subject curUser = SecurityUtils.getSubject();
if (!curUser.isAuthenticated()) {
AuthenticationToken authToken = new UsernamePasswordToken("guest", "guest");
try {
curUser.login(authToken);
} catch (AuthenticationException e) {
e.printStackTrace();
return;
}
System.out.println("guest role=" + curUser.hasRole("guest"));
String instance = "courseA";
String createPerm = "courses:create:" + instance;
String updatePerm = "courses:update:" + instance;
String deletePerm = "courses:delete:" + instance;
System.out.println("create " + instance + " permitted:" + curUser.isPermitted(createPerm)); // Returns false
System.out.println("update " + instance + " permitted:" + curUser.isPermitted(updatePerm)); // Returns false
System.out.println("delete " + instance + " permitted:" + curUser.isPermitted(deletePerm)); // Returns true
}
}
}
Thanks
kshiraly