shiro学习笔记历程

    xiaoxiao2022-07-04  166

    开始学习shiro一个最原始简单小栗子。 学习一步记录一步 第一步:创建maven项目将相关jar包配置

    <!-- shiro核心包 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.2</version> </dependency> <!-- 添加shiro web支持 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>1.3.2</version> </dependency> <!-- 添加shiro spring整合 --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.3.2</version> </dependency> </dependencies> <build> <finalName>shrio</finalName> </build>

    第二步创建测试类进行测试

    //读取ini文件 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); //获得SecurityManager SecurityManager securityManager = factory.getInstance(); //将SecurityManager绑定到上下文中 SecurityUtils.setSecurityManager(securityManager); //获取与当前系统进行交互的Subject对象 Subject subject = SecurityUtils.getSubject(); //用户名密码 获取token UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("test", "1234"); //用户是否验证过 System.err.println(subject.isAuthenticated());//输出false try { /** * 进行登录 * 此时若密码错误则会抛出 IncorrectCredentialsException异常 * 若账号不存在则会抛出 UnknownAccountException异常 */ subject.login(usernamePasswordToken); if (subject.isAuthenticated()) {//验证用户是否登录成功false:登录失败,true:登录成功 System.out.println("登录成功!"); //使用subject中的hasRole方法判断是否拥有这个角色 if (subject.hasRole("admin")) { System.out.println("拥有admin角色"); }else { System.out.println("没有admin角色"); } //使用subject中isPermitted方法判断是否有这个权限 if (subject.isPermitted("update")) { System.out.println("拥有这个权限"); }else { System.out.println("没有这个权限"); } //使用subject中isPermittedAll方法判断是否同时拥有这多个权限,一个条件不成立则返回false if (subject.isPermittedAll("serarch","update")) { System.out.println("拥有add,update权限"); }else { System.out.println("没有add,update权限"); } } //用户是否验证过 System.err.println(subject.isAuthenticated());//输出true } catch (IncorrectCredentialsException inCredentialsException) { // TODO: handle exception' inCredentialsException.printStackTrace(); System.out.println("密码错误!"); }catch(UnknownAccountException uAccountException) { uAccountException.printStackTrace(); System.out.println("未知的账号!"); }

    shiro.ini文件中key-value格式 root(用户名)= 1234(密码)

    #users 使用户,可以定义多个,后面给当前用户赋予相应的权限,可以赋值多个权限,隔开 [users] root=1234,admin test=1234,test #设置权限 *(全部权限) [roles] admin=* test=add,update
    最新回复(0)