您的位置:首页 > 数据库 > Mongodb

shiro连mongodb例子的realm

2011-11-28 16:34 281 查看
package com.demo.mongodb.realm;

import java.util.Iterator;

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.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;

import com.bugull.mongo.BuguMapper;
import com.demo.mongodb.entity.Permission;
import com.demo.mongodb.entity.Role;
import com.demo.mongodb.entity.User;
import com.demo.mongodb.entity.UserDao;

public class MongodbRealm extends AuthorizingRealm {
private UserDao userDao;

@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
String name=getName();
Iterator iterator=principals.fromRealm(name).iterator();
String userName=null;
if(iterator.hasNext()){
userName = (String) iterator.next();
}
User user =(User) userDao.findOne("username", userName);
BuguMapper.fetchCascade(user, "roleSet");
if (user != null) {
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
for (Role group : user.getRoleSet()) {
BuguMapper.fetchCascade(group, "perssionSet");
info.addRole(group.getName());
if(group.getPerssionSet()!=null){
Iterator it=group.getPerssionSet().iterator();
while(it.hasNext()){
info.addStringPermission(((Permission)it.next()).getName());
}
}

}
return info;
} else {
return null;
}

}

@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
User user =(User) userDao.query().is("username", token.getUsername()).result();
if (user != null) {
return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());
} else {
return null;
}
}

public UserDao getUserDao() {
return userDao;
}

public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: