`

shiro配置文件读取(二)

 
阅读更多
Shiro是一个简单、开源且强大的安全管理框架,是实现单点登录的理想选择,常被应用于java web应用中。

在java web中使用shiro时,可以使用一个INI文件对shiro进行配置,这仅需要在web.xml中配置一下IniShiroFilter的一个参数configPath

<filter>   
    <filter-name>ShiroFilter</filter-name>  
    <filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>  
    <init-param>  
        <param-name>configPath</param-name>  
       <span class="bold" style="color: #ff0000;"> <param-value>/WEB-INF/shiro.ini</param-value> </span>    </init-param>   
</filter>   
<filter-mapping>     
    <filter-name>ShiroFilter</filter-name>    
    <url-pattern>/*</url-pattern>    
</filter-mapping>   


注:红字中的配置可能会找不到shiro.ini文件
IniShiroFilter在shiro1.2中这个过滤器@Deprecated, 改用ShiroFilter

其在初始化时,会调用ini()方法,ini()调用configure(),configure()又调用loadIniFromConfig()或者loadIniFromPath(),其中前者对应IniShiroFilter的另一个参数config,后者对应参数configPath,继续查loadIniFromPath(),发现它又调用convertPathToIni(),convertPathToIni()接着又调用ini.loadFromPath(),至此跳出了IniShiroFilter的函数调用;继续查ini类,打开其源码,找到loadFromPath(),它又调用ResourceUtils.getInputStreamForPath(),找到ResourceUtils类的getInputStreamForPath()方法
    public void init() throws Exception {
        applyInitParams();
        configure();
    }


protected void configure() throws Exception {        

        Ini ini = loadIniFromConfig();

        if (CollectionUtils.isEmpty(ini)) {
            log.info("Null or empty configuration specified via 'config' init-param.  " +
                    "Checking path-based configuration.");
            ini = loadIniFromPath();
        }

         ......
     }


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;  
	}  



至此,我们知道,其路径需要一个前缀,如果是使用类路径,则在前面加classpath:,比如 classpath:shiro.ini,如果使用文件路径,则在前面加file:,比如 e:\shiro.ini,

如果使用网路路径,同样在前面加url:,如url:http://www.xxx.com/shiro.ini,如果没有前缀,则默认是使用文件路径。
分享到:
评论

相关推荐

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

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

    47-二级缓存 Hibernate-Shiro-MyBatis

    2. 在hibernate.cfg.xml或应用的配置文件中启用二级缓存并指定提供者。 3. 配置实体类,声明是否参与二级缓存以及缓存策略。 4. 对SessionFactory进行配置,设置缓存区域和过期策略。 **Shiro二级缓存** Apache ...

    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需要经过哪些过滤器处理。...

    struts2和shiro完美整合解决方案

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

    shiro权限管理类项目框架

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

    跟我学shiro

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

    shirodemo实现web登陆

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

    SSM+Maven+Shiro

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

    Shiro+SpringMVC 示例

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

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

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

    spring_boot_shiro

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

    Shiro1.2.2_源码(压缩包)

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

    Apache Shiro教程

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

    shiro登录拦截校验demo

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

    shiro认证授权

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

    shiro实现授权登陆验证

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

    shiro身份验证、授权

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

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

    反序列化漏洞通常出现在程序中,当接收到从网络或持久存储中读取的数据,并将其转换回原来的对象实例时。如果这个过程没有进行充分的安全检查,攻击者可以构造恶意的序列化数据,导致代码执行、权限提升或其他安全...

Global site tag (gtag.js) - Google Analytics