Shiro अपने आवश्यकता के अनुसार अपने स्वयं के दायरे को लागू प्रदान करते हैं।
एक साधारण क्षेत्र बनाएं जिसमें आप विवरण, लॉगिन, अनुमतियां और भूमिकाएं प्रबंधित कर सकें। आप उन्हें प्रबंधित करने के लिए जेडीबीसी, हाइबरनेट, या किसी अन्य प्रमाणीकरण विधि का उपयोग कर सकते हैं।
इस क्षेत्र को अपने आईएनआई या आपके प्रोजेक्ट में जिस भी तरीके से उपयोग कर रहे हैं उसे कॉन्फ़िगर करें।
अब शिरो क्रेडेंशियल, अनुमतियों, भूमिकाओं को देखने के लिए स्वचालित रूप से आपके दायरे वर्ग के तरीकों का आह्वान करेगा।
पूर्व में मेरे पास एक शिरो हाइबरनेट क्षेत्र है, मैंने अपने डीबी में उपयोगकर्ताओं को प्रबंधित करने के लिए अपने हाइबरनेट कोड का उपयोग किया।
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.CredentialsMatcher;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
/**
* @author Ankit
*
*/
public class PortalHibernateRealm extends AuthorizingRealm {
private static final Logger LOGGER = new Logger(
PortalHibernateRealm.class.toString());
/**
*
*/
public PortalHibernateRealm() {
super();
/*
* Set credential matcher on object creation
*/
setCredentialsMatcher(new CredentialsMatcher() {
@Override
public boolean doCredentialsMatch(AuthenticationToken arg0,
AuthenticationInfo arg1) {
UsernamePasswordToken token = (UsernamePasswordToken) arg0;
String username = token.getUsername();
String password = new String(token.getPassword());
/*
Check for credential and return true if found valid else false
*/
return false;
}
});
}
@Override
protected AuthorizationInfo doGetAuthorizationInfo(
PrincipalCollection principalCollection) {
Collection<String> permissionSet;
SimpleAuthorizationInfo info = null;
Long userId = (Long) principalCollection.getPrimaryPrincipal();
//Using thi principle create SimpleAuthorizationInfo and provide permissions and roles
info = new SimpleAuthorizationInfo();
return info;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(
AuthenticationToken authcToken) throws AuthenticationException {
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
/*using this token create a SimpleAuthenticationInfo like
User user = UserUtil.findByEmail(token.getUsername());
*/
SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(
primaryPrin, Password, screenName);
return authenticationInfo;
}
}
स्रोत
2014-06-26 07:23:13