1.导入Shiro-core核心类库的pom依赖
2.在resources文件夹下建一个后缀为.ini文件
【users】
解析(root,test均代表用户;123456,000000代表登录密码;admin,test代表用户所拥有角色)
【roles】
解析 (admin,test代表用户所拥有角色;*代表所有权限)
3.可以建一个class类文件HelloWord进行测试
package com.yzy.shirotest; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory; public class HelloWord { public static void main(String[] args) { Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); //获取securityManager 实例 SecurityManager securityManager=factory.getInstance(); //把securityManager实例绑定到SecurityUtils SecurityUtils.setSecurityManager(securityManager); //得到当前执行的用户 Subject subject = SecurityUtils.getSubject();//认证实体,当前进来的用户 //创建token令牌,用户名/密码 UsernamePasswordToken token = new UsernamePasswordToken("test","000000"); //用户身份认证 try { subject.login(token); //判断是否登陆成功 if(subject.isAuthenticated()) { System.out.println("登陆成功"); //判断用户是否有某一角色 if(subject.hasRole("admin")) { System.out.println("有admin角色"); }else { System.out.println("没有admin角色"); } //判断用户是否有某一权限 if(subject.isPermitted("search")) { System.out.println("有search权限"); }else { System.out.println("没有search权限"); } if(subject.isPermitted("del")) { System.out.println("有del权限"); }else { System.out.println("没有del权限"); } //判断是否同时拥有多个权限 if(subject.isPermittedAll("add","del")) { System.out.println("同时拥有add,del权限"); }else { System.out.println("不同时拥有add,del权限"); } } } catch (AuthenticationException e) { e.printStackTrace(); System.out.println("用户名或密码错误"); } //登出 subject.logout(); } }
4.测试结果如下:
5.遇到如下图报红线提示类型警告(注意是否有:import org.apache.shiro.mgt.SecurityManager;)