shiro连mongodb例子的realm
  TEZNKK3IfmPf 2023年11月15日 41 0
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;
  }

}

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月14日   56   0   0 mongodb
  TEZNKK3IfmPf   2023年11月15日   42   0   0 shiromongodb
  TEZNKK3IfmPf   2023年11月15日   29   0   0 mongodbjava
  TEZNKK3IfmPf   2024年03月29日   58   0   0 mongodb
  TEZNKK3IfmPf   2023年11月15日   42   0   0 shiro
  TEZNKK3IfmPf   2023年11月15日   27   0   0 mongodb
TEZNKK3IfmPf