`

shiro配置文件读取(一)

 
阅读更多
通过Java代码加载shiro.ini文件。

//加载ini文件
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");

    public IniSecurityManagerFactory(String iniResourcePath) {
        this(Ini.fromResourcePath(iniResourcePath));
    }


    /**
     * Creates a new {@code Ini} instance loaded with the INI-formatted data in the resource at the given path.  The
     * resource path may be any value interpretable by the
     * {@link ResourceUtils#getInputStreamForPath(String) ResourceUtils.getInputStreamForPath} method.
     *
     * @param resourcePath the resource location of the INI data to load when creating the {@code Ini} instance.
     * @return a new {@code Ini} instance loaded with the INI-formatted data in the resource at the given path.
     * @throws ConfigurationException if the path cannot be loaded into an {@code Ini} instance.
     */
    public static Ini fromResourcePath(String resourcePath) throws ConfigurationException {
        if (!StringUtils.hasLength(resourcePath)) {
            throw new IllegalArgumentException("Resource Path argument cannot be null or empty.");
        }
        Ini ini = new Ini();
        ini.loadFromPath(resourcePath);
        return ini;
    }


    /**
     * Loads data from the specified resource path into this current {@code Ini} instance.  The
     * resource path may be any value interpretable by the
     * {@link ResourceUtils#getInputStreamForPath(String) ResourceUtils.getInputStreamForPath} method.
     *
     * @param resourcePath the resource location of the INI data to load into this instance.
     * @throws ConfigurationException if the path cannot be loaded
     */
    public void loadFromPath(String resourcePath) throws ConfigurationException {
        InputStream is;
        try {
            is = ResourceUtils.getInputStreamForPath(resourcePath);
        } catch (IOException e) {
            throw new ConfigurationException(e);
        }
        load(is);
    }


   /**
     * Returns the InputStream for the resource represented by the specified path, supporting scheme
     * prefixes that direct how to acquire the input stream
     * ({@link #CLASSPATH_PREFIX CLASSPATH_PREFIX},
     * {@link #URL_PREFIX URL_PREFIX}, or {@link #FILE_PREFIX FILE_PREFIX}).  If the path is not prefixed by one
     * of these schemes, the path is assumed to be a file-based path that can be loaded with a
     * {@link FileInputStream FileInputStream}.
     *
     * @param resourcePath the String path representing the resource to obtain.
     * @return the InputStraem for the specified resource.
     * @throws IOException if there is a problem acquiring the resource at the specified path.
     */
    public static InputStream getInputStreamForPath(String resourcePath) throws IOException {

        InputStream is;
        if (resourcePath.startsWith(CLASSPATH_PREFIX)) {
            is = loadFromClassPath(stripPrefix(resourcePath));

        } else if (resourcePath.startsWith(URL_PREFIX)) {
            is = loadFromUrl(stripPrefix(resourcePath));

        } else if (resourcePath.startsWith(FILE_PREFIX)) {
            is = loadFromFile(stripPrefix(resourcePath));

        } else {
            is = loadFromFile(resourcePath);
        }

        if (is == null) {
            throw new IOException("Resource [" + resourcePath + "] could not be found.");
        }

        return is;
    }


   /**
     * Resource path prefix that specifies to load from a classpath location, value is <b>{@code classpath:}</b>
     */
    public static final String CLASSPATH_PREFIX = "classpath:";
    /**
     * Resource path prefix that specifies to load from a url location, value is <b>{@code url:}</b>
     */
    public static final String URL_PREFIX = "url:";
    /**
     * Resource path prefix that specifies to load from a file location, value is <b>{@code file:}</b>
     */
    public static final String FILE_PREFIX = "file:";
分享到:
评论

相关推荐

    jfinal整合shiro权限控制(从数据库读取配置信息)

    在实际操作中,我们需要先配置Shiro的配置文件(如shiro.ini或通过Java代码配置),设置 Realm 的数据源,然后在JFinal的启动或初始化阶段,通过JfinalShiroFilterFactory创建过滤器链,并将它注册到JFinal的路由...

    shiro-main.zip

    此外,"shiro-main.zip"可能还包含了配置文件(如shiro.ini或shiro.xml)、示例代码、测试用例等,帮助开发者理解和使用Shiro框架。如果你正在学习或使用Shiro,解压并研究这些文件将有助于深入理解其工作原理和用法...

    springboot集成freemarker和shiro框架

    2. 配置文件:在`application.properties`或`application.yml`中配置FreeMarker模板路径和后缀: ```properties # application.properties 示例 spring.freemarker.template-loader-path=classpath:/templates/ ...

    shirodemo整合spring+springmvc+shiro

    3. **编写Shiro配置**:在Spring的配置文件(如`applicationContext.xml`或`applicationContext-shiro.xml`)中,定义Shiro的FilterChainDefinitionSource,配置Shiro过滤器链,指定哪些URL需要经过哪些过滤器处理。...

    SSM+Maven+Shiro

    具体实现时,通常会在Spring配置文件中定义Shiro的安全拦截器,比如使用`FormAuthenticationFilter`进行表单登录,`RolesAuthorizationFilter`进行角色权限检查。在Shiro配置中,可以定义用户、角色和权限的关系,...

    struts2和shiro完美整合解决方案

    Struts2的配置文件(struts.xml)定义了Action与URL的映射,以及Action如何处理请求和展示结果。此外,Struts2还支持拦截器,允许开发者添加自定义逻辑在Action执行前后进行处理。 接下来,我们转向Shiro。Shiro...

    跟我学shiro

    - **配置文件**:如`shiro.ini`,这是Shiro的基本配置文件,包含 Realm 配置、过滤器链定义等。 - **自定义 Realm**:实现具体的认证和授权逻辑。 - **Controller**:展示如何在Spring MVC或者类似的框架中集成Shiro...

    shiro权限管理类项目框架

    - **配置**:通常,Shiro 的配置包含在 Spring 配置文件或者单独的 Shiro 配置文件中,定义 Realm 实例、安全拦截器规则等。 - **控制器**:Shiro 可以与 MVC 框架(如 Spring MVC)结合,通过注解或者过滤器来实现...

    shirodemo实现web登陆

    - 首先需要在应用的配置文件(如 `shiro.ini` 或 Spring 配置)中定义 Realm,指定数据源和凭证匹配器。 - 配置 SecurityManager,将其绑定到 Servlet 容器,通常是通过 `WebIniSecurityManagerFactory` 创建实例...

    Shiro+SpringMVC 示例

    - **Shiro配置**:在SpringMVC的配置文件中,我们需要定义Shiro的过滤器链,比如`authc`(身份验证过滤器)和`perms`(权限过滤器)。 - **Security Manager**:Shiro的核心组件,负责管理和协调所有安全相关组件...

    spring_boot_shiro

    在Spring Boot的配置文件(application.yml或application.properties)中,可以设置Shiro的一些基本属性,如缓存管理、session超时时间等。 3. 创建Shiro配置类 创建一个名为`ShiroConfig`的配置类,用于配置Shiro...

    SpringBoot 、Shiro、 自定义注解权限控制源码下载

    2. **SpringBoot的自动配置**:学习如何通过@ConfigurationProperties注解读取配置文件,并自动配置bean。 3. **Shiro的集成**:研究如何在SpringBoot应用中配置Shiro,包括安全配置、 Realm(认证和授权信息提供者...

    shiro认证授权

    在 `shiro.ini` 或者 Spring 配置文件中,你需要定义 `SecurityManager` 并配置 `Realm`。例如: ```ini [main] securityManager.realms = $myRealm myRealm = com.example.MyRealm myRealm....

    Shiro1.2.2_源码(压缩包)

    10. **配置与生命周期管理(Configuration & Lifecycle Management)**:Shiro 通过 XML 配置文件或 Java API 进行初始化,提供了对象的生命周期管理,如 Bean 的初始化、销毁等。 通过对 Shiro1.2.2 的源码分析,...

    shiro实现授权登陆验证

    在实际项目中,`shiro-root`目录可能包含了Shiro的配置文件(如shiro.ini或shiro.xml)、Spring整合Shiro的相关配置、以及自定义Realm的实现等。我们需要根据项目需求配置Shiro的安全策略,包括密码加密算法、未授权...

    Apache Shiro教程

    - **配置Shiro**:可以通过XML配置文件或者Java代码来配置SecurityManager和Realm。 - **身份验证流程**:Shiro通过Subject的`login()`方法发起登录请求,SecurityManager通过Realm验证凭证,成功后创建Session并...

    shiro 反序列化漏洞综合利用工具 shiro_attack_by J1anfen

    该工具包含一个可运行的 JAR 文件,用户可以直接运行它来对目标系统进行测试。这可能包括模拟恶意序列化数据的生成、发送到目标系统并分析其响应,以确认是否存在漏洞。对于系统管理员而言,这个工具可以帮助他们...

    shiro身份验证、授权

    在提供的资源中,配置文件可能是Shiro的ini配置文件,其中包含了关于用户、角色和权限的定义。相关jar包包含了运行Shiro所需的所有依赖。工具类可能包含了一些辅助方法,例如用于与Shiro API交互,简化开发过程。 ...

    shiro登录拦截校验demo

    在"pcMsg"这个文件中,可能包含了项目的源代码、配置文件等,通过查看这些文件,我们可以深入理解Shiro如何在实际项目中被运用,包括登录验证的具体实现、权限拦截的逻辑以及如何配置和扩展Shiro。通过这个demo,...

    springboot-08-shiro.rar

    2. 动态权限控制:Shiro提供了一种灵活的权限表达方式,可以通过注解或者配置文件动态设定权限。 五、会话管理 Shiro还提供了会话管理功能,可以实现会话的创建、读取、更新、删除以及超时管理等。同时,Shiro支持...

Global site tag (gtag.js) - Google Analytics