java SE shiro认证过程

来源:互联网 发布:sybase数据库实例教程 编辑:程序博客网 时间:2024/06/05 15:57

登录apache shiro官网:
http://shiro.apache.org/download.html#latestSource

下载源码包:

git clone https://github.com/apache/shiro.gitgit checkout shiro-root-1.3.2 -b shiro-root-1.3.2

得到下面的文件:
这里写图片描述

使用idea导入samples
这里写图片描述

使用quickstart进行学习


shiro.ini文件介绍

[users]用户名=密码,角色1,角色2。。。[roles]角色=权限
import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.*;import org.apache.shiro.config.IniSecurityManagerFactory;import org.apache.shiro.mgt.SecurityManager;import org.apache.shiro.session.Session;import org.apache.shiro.subject.Subject;import org.apache.shiro.util.Factory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class HelloWorld {    private  static final Logger logger = LoggerFactory.getLogger(HelloWorld.class);    public static void main(String[] args) {        //1.获取权限管理器        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");        SecurityManager securityManager = factory.getInstance();        //2.设置安全管理器        SecurityUtils.setSecurityManager(securityManager);        //3.获取subject        Subject currentUser = SecurityUtils.getSubject();        Session session = currentUser.getSession();        if(!currentUser.isAuthenticated()){            UsernamePasswordToken token = new UsernamePasswordToken("root","secret");            try {                currentUser.login(token);                logger.info("登录成功");            }catch (UnknownAccountException e){                logger.info("用户名错误");            }catch (IncorrectCredentialsException e){                logger.info("密码错误");            }catch (LockedAccountException e){                logger.info("用户locked");            }catch (AuthenticationException e){                logger.info("认证失败");            }        }        //判断用户是否拥有指定的角色        if(currentUser.hasRole("admin")){            logger.info("拥有角色");        }else{            logger.info("没有该角色");        }        //判断用户是否拥有指定的权限        if(currentUser.isPermitted("winnebago:drive:eagle5")){            logger.info("拥有该权限");        }else {            logger.info("没有该权限");        }        //退出登录        currentUser.logout();    }}