1. 程式人生 > >第七章 與Web整合(二) ShiroFilter入口

第七章 與Web整合(二) ShiroFilter入口

1、Shiro 1.1及以前版本配置方式

<filter>
	<filter-name>iniShiroFilter</filter-name>
	<filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
	<init-param>
		<param-name>configPath</param-name>
		<param-value>classpath:shiro.ini</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>iniShiroFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

1、使用IniShiroFilter作為Shiro 安全控制的入口點,通過url-pattern指定需要安全的URL;

2、通過configPath指定ini配置檔案位置,預設是先從/WEB-INF/shiro.ini載入,如果沒有就預設載入classpath:shiro.ini,即預設相對於web 應用上下文根路徑;

3、也可以通過如下方式直接內嵌ini配置檔案內容到web.xml

<init-param>
	<param-name>config</param-name>
	<param-value>
		ini配置檔案貼在這
	</param-value>
</init-param>

2、Shiro 1.2及以後版本的配置方式

從 Shiro 1.2 開始引入了Environment/WebEnvironment的概念,即由它們的實現提供相應的SecurityManager及其相應的依賴ShiroFilter會自動找到Environment然後獲取相應的依賴。

<listener>
	<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>

通過EnvironmentLoaderListener 來建立相應的WebEnvironment , 並自動繫結到ServletContext,預設使用IniWebEnvironment實現。

可以通過如下配置修改預設實現及其載入的配置檔案位置:

<context-param>
	<param-name>shiroEnvironmentClass</param-name>
	<param-value>org.apache.shiro.web.env.IniWebEnvironment</param-value>
</context-param>
<context-param>
	<param-name>shiroConfigLocations</param-name>
	<param-value>classpath:shiro.ini</param-value>
</context-param>

shiroConfigLocations 預設是“/WEB-INF/shiro.ini”,IniWebEnvironment 預設是先從/WEB-INF/shiro.ini載入,如果沒有就預設載入classpath:shiro.ini。

3、與Spring整合

<filter>
	<filter-name>shiroFilter</filter-name>
	<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	<init-param>
		<param-name>targetFilterLifecycle</param-name>
		<param-value>true</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>shiroFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

DelegatingFilterProxy作用是自動到spring容器查詢名字為shiroFilter(filter-name)的bean並把所有Filter的操作委託給它。然後將ShiroFilter 配置到spring容器即可:

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
	<property name="securityManager" ref="securityManager"/>
	<!-- 忽略其他,詳見與Spring 整合部分 -->
</bean>
最後不要忘了使用org.springframework.web.context.ContextLoaderListener 載入這個spring配置檔案即可。

相關推薦

Web整合 ShiroFilter入口

1、Shiro 1.1及以前版本配置方式 <filter> <filter-name>iniShiroFilter</filter-name> <filter-class>org.apache.shiro.web.serv

Web整合

Shiro提供了與Web整合的支援,其通過一個ShiroFilter入口來攔截需要安全控制的URL,然後進行相應的控制,ShiroFilter類似於如Strut2/SpringMVC這種web框架的前端控制器,其是安全控制的入口點,其負責讀取配置(如ini配置檔案),然後判

Web整合——《跟我學Shiro》

 Shiro提供了與Web整合的支援,其通過一個ShiroFilter入口來攔截需要安全控制的URL,然後進行相應的控制,ShiroFilter類似於如Strut2/SpringMVC這種web框架的前端控制器,其是安全控制的入口點,其負責讀取配置(如ini配置檔案),

NoSQL資料庫技術

  文件型資料庫 文件是處理資訊的基本單位。文件可以很長、很複雜、可以無結構 一個文件對包含的資料型別和內容進行“自我描述”。XML文件、HTML文件和JSON 文件 嵌入式文件 --文件儲存模型支援巢狀結構 每個文件的ID就是它唯一的鍵,ID在一個數據庫“集合”中是唯

Linux叢集架構

八、LVS DR模式搭建 九、keepalived + LVS 十、擴充套件   八、LVS DR模式搭建 實驗環境 三臺虛擬機器,都需要關閉firewalld服務, 並且安裝iptables-serives服務, 啟動iptables服務,並清空iptables規則

3 RFID基礎知識

1.電子標籤分為:有源電子標籤、無源電子標籤和半無源電子標籤。 2.電子標籤的儲存區域通常分為:保留區、EPC區、TID區、使用者區。     保留區:用於儲存標籤的滅活密碼以及訪問密碼,在沒有鎖定時可以進行讀寫操作,鎖定後不能讀取也不能修改。   

支援向量機SVM

1.1 支援向量機 1.1.1 定義 支援向量機(support vector machine)是一種二分類模型,它的基本模型是定義在特徵空間上的間隔最大的線性分類器間隔最大使它有別於感知機。支援向量機的學習策略是間隔最大化,支援向量機的學習演算法是求解凸二次規劃的最優化演算法。 

輸入輸出系統

6.6 使用者層的I/O軟體 1.系統呼叫與庫函式 不允許執行在使用者態的應用程序,去直接呼叫執行在核心態(系統態)的OS過程。 應用程序在執行時,又必須取得OS所提供的服務。 OS在使用者層中引入了系統呼叫,應用程式可以通過它,間接呼叫OS中的I/O過程,對I/

6 RFID標籤識別

c#中編碼與資料型別的轉換 Encoding:位元組編碼類 Convert:基本資料型別轉換成類 BitConverter:位元組陣列轉換 (一)讀寫標籤的使用。  1.ReadTag函式     語法:ReadTag(IntPtr hCom,byte memBank,by

_選擇結構

package com.bdqn.Test; import java.util.Scanner; public class Derm1 {     public static void main(String[] args) {    &nb

三篇 泡沫滅火系統

技術 com .com mage 分享 技術分享 png info 分享圖片 下面的不重要 第三篇 第八章泡沫滅火系統(二)

三篇 建築滅火器配置

nbsp 建築 圖片 技術分享 png ima .com info com    第三篇 第十章建築滅火器配置(二)

JSP資料互動

1,編寫一個JSP頁面,統計網頁被訪問次數 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HT

C++ 類和物件

【專案1 - 三角形類】下面設計一個三角形類,請給出各成員函式的定義 #include<iostream> #include<cmath> using namespace std; class Triangle {public: void Set

CSAPP-異常控制流

程序 程序是一個執行中的程式的例項。系統中的每個程式都是執行在某個程序的上下文中。上下文由程式正確執行所需的狀態組成。這個狀態包括,存放在儲存器中的程式碼和資料,它的棧,通用目的暫存器內容,程式計數器,環境變數,以及開啟檔案描述符的集合。 每次使用者向外殼(

[讀書筆記] 專案成本管理

第七章 專案成本管理(下)1.什麼是控制成本,它的輸入輸出是什麼更新專案狀態,以更新專案成本,管理成本基準的過程。它的作用是發現實際與計劃的差異,以便採取糾正措施,降低風險。應重點分析專案資金支出與相應完成的實際工作之間的關係。有效成本控制的關鍵在於,對經批准的成本基準及其變

JAVA_SE 類和物件

九、排序1.冒泡2選擇3.插入排序:從第二個開始與前面所有已經排好序的序列進行比較,插入到對應位置              for(inti=1;i<arr.length;i++)  {  //第二個元素開始,每個元素與前面已經排好序的元素比較            

3 處理機排程死鎖

什麼時候計算各程序的響應比優先權? 需要進行排程選擇的時候比較各自優先權 作業完成時 新作業產生時(搶佔、非搶佔) 時間片完成時 程序阻塞時 影響時間片長度的主要因素        系統的處理能力和系統的負載狀態。(依據系統的

處理機排程死鎖

3.6 預防死鎖 1. 破壞“請求和保持”條件 所有程序在開始執行之前,必須一次性地申請其在整個執行過程中所需的全部資源。 優點:簡單、易行且安全 缺點:①資源被嚴重浪費 ②使程序經常會發生飢餓現象 2. 破壞“不可搶佔”條件 允許程序先執行,提出新的

《圖解HTTP》閱讀筆記-----確保WEB安全的HTTPS

http 發的 安全協議 https 無法自動 交換 一個 加密技術 ssl證書               第七章、確保WEB安全的HTTPSHTTP的缺點:通信使用明文(不加密),內容可能會被竊聽 解決---加密處理:   //將通信加密 :通過SSL(安全套接層)-