zoukankan      html  css  js  c++  java
  • shiro基于ini文件入门案例

    shiro基于ini文件入门案例

    1、导包

    如果测试类不在测试环境下,则改变依赖作用范围为compile

    <dependencies>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.4.1</version>
        </dependency>
        <!-- Shiro uses SLF4J for logging.  We'll use the 'simple' binding
             in this example app.  See http://www.slf4j.org for more info. -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.21</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
    

    2、创建ini文件

    文件放在类路径下

    # 配置用户
    [users]
    yl01=1111,role1
    yl02=1111,role2
    yl03=1111,role1,role2
    yl04=1111,role3
    
    # 配置角色
    [roles]
    role1=user:query,user:add,user:update,user:delete,user:export
    role2=user:query,user:add
    role3=*:*
    

    3、测试

    package com.yl.shiro;
    
    import org.apache.shiro.SecurityUtils;
    import org.apache.shiro.authc.AuthenticationException;
    import org.apache.shiro.authc.AuthenticationToken;
    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;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import java.util.Arrays;
    
    
    /**
     * 测试类
     */
    public class ShiroTest {
        //日志输出工具
        private static final transient Logger log = LoggerFactory.getLogger(ShiroTest.class);
    
        public static void main(String[] args) {
            log.info("My First Apache Shiro Application");
            //创建安全管理器的工厂对象
            Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
            //使用工厂创建安全管理器对象
            SecurityManager securityManager = factory.getInstance();
            //把安全管理器绑定到当前线程
            SecurityUtils.setSecurityManager(securityManager);
            //得到主体对象
            Subject currentUser = SecurityUtils.getSubject();
            //封装用户对象
            AuthenticationToken token=new UsernamePasswordToken("yl01","1111");
            //进行认证
            try {
                currentUser.login(token);
                System.out.println("认证通过");
            } catch (AuthenticationException e) {
                System.out.println("用户名或密码错误");
            }
    
            //判断用户是否认证通过
            boolean authenticated=currentUser.isAuthenticated();
    
            //单个角色判断
            boolean role2=currentUser.hasRole("role1");
            //批量角色分开判断
            boolean[] booleans=currentUser.hasRoles(Arrays.asList("role1","role2"));
            //批量角色同时判断
            boolean allRoles=currentUser.hasAllRoles(Arrays.asList("role1","role2"));
    
            //用户单个权限判断
            boolean permitted=currentUser.isPermitted("user:query");
            //用户多个权限分开判断
            boolean[] permitted1=currentUser.isPermitted("user:query","user:add");
            //用户多个权限同时判断
            boolean permittedAll=currentUser.isPermittedAll("user:add","user:add","user:query");
    
            //用户注销
            currentUser.logout();
    
        }
    
    }
    
    记得快乐
  • 相关阅读:
    6.Dump域内用户Hash姿势集合
    4.浅谈跨域劫持
    7. Smali基础语法总结
    7.linux安全基线加固
    12. git常用语法总结
    5.内网渗透之PTH&PTT&PTK
    4. 内网渗透之IPC$入侵
    1.我所了解的内网渗透
    34.不安全的HTTP
    2.内网渗透之端口转发
  • 原文地址:https://www.cnblogs.com/Y-wee/p/13937890.html
Copyright © 2011-2022 走看看