008 shiro的過濾器

2022-09-14 05:42:12 字數 2482 閱讀 8959

一 .概述

在上一節之中,我們說到shiro使用過濾器完成整個web的許可權管理.

現在我們來看一下shirofilter的一些內容.

二 . 配置內容解析

"

shirofilter

"class="

org.apache.shiro.spring.web.shirofilte***ctorybean

">

"securitymanager

"ref="

securitymanager

">

"loginurl

" value="

/login

">

"unauthorizedurl

" value="

/unan.jsp

">

"successurl

" value="

/web-inf/success.jsp

">

"filterchaindefinitions

">

/login=anon

/js/*

*=anon

/**=authc

我們在shirofilter之中配置了乙個securitymanager,也就是說shirofilter還是使用securitymanager來完成整個shiro的運轉流程.

我們看到我們配置乙個url,這些url是shirofilter內建的一些配置資訊.

(1)loginurl: 表示當shirofilter發現使用者沒有認證過,自動跳轉到該url之中完成認證操作.

(2)unauthorizedurl : 表示shiro發現使用者訪問了乙個自己無許可權的資源的時候,就會將頁面重定向到未授權頁面.

(3)successurl : 表示使用者登入成功之後重定向的頁面,一般情況我們不使用這個配置.

在shirofilter之中,最為重要的就是filertchain這個概念了.

shiro也是使用過濾鏈的方式完成操作的.

配置的內容為 : url = 過濾器1,過濾器2 這樣的模式.

三 .shirofilter的結構

我們看到上面的類繼承結構,我們需要注意的是下面的幾個過濾器.

(1)nameablefilter: 名稱過濾器,我們二部分的anon這樣的名字就是通過這個過濾器完成的識別工作.

(2)accesscontrollerfilter : 訪問控制過濾器,這個過濾器是我們以後自定義filter需要繼承的filter.

我們來看一下accesscontrollerfilter這個類:

我們只看需要重寫的方法:

public

abstract

我們來看一下上面的兩個方法:

(1)isaccessallowed():這個方法是通過引數完成是否允許成功過濾的方法.

之所以是陣列,就是代表可以有多個.

該方法返回true,表示可以繼續過濾.返回false,表示進入onaccessdenied()方法.

(2)onaccessdenied()方法:當該過濾器不允許過濾的時候會進入該方法之中,我們可以從這個方法之中編寫自己的邏輯.

四 .內建過濾器

在最上面我們編寫了anon這樣的內建過濾器,現在我們介紹一下常用的過濾器.

(1)anno: 匿名方法,表示使用者不需要任何認證(當然也不需要許可權)就能進行訪問.

(2)authc : 表示需要經過認證才能進行訪問.

(3)roles: 表示使用者需要擁有對應的角色才能訪問

(4)perms : 表示使用者需要有對應的許可權才能訪問.

下面我們來演示一下上面最常用的過濾器:

/login=anon

/authc=authc

/user=roles[admin]

/user/add=perms[admin:add]

在上面我們配置了四類我們最為常用的過濾器:

(1)anon 表示可以匿名訪問

(2)authc : 表示需要認證之後才能訪問

(3)roles:表示需要具有角色才能訪問

(4)perms:表示需要一定的許可權才能訪問.

@restcontroller

public

class

filtercontroller

"/authc")

public

string authc()

"/user")

public

string user()

"/user/add")

public

string useradd()

}

我們編寫對應的controller.看是否能夠實現url攔截的方式.

因為我們的url都被配置需要一定的許可權才能訪問,現在我們的url就被保護了.

shiro內建過濾器

rest 例子 admins user rest user 根據請求的方法,相當於 admins user perms user method 其中method為post,get,delete等。port 例子 admins user port 8081 當請求的url的埠不是8081是跳轉到sch...

shiro過濾器名稱

功 能配 置 anon 任何使用者傳送的請求都能夠訪問 authc 經過認證的請求可訪問,否則將會將請求重定向到 ini 配置檔案配置的 authc.loginurl 資源,進行認證操作 authc.loginurl login.jsp authc.successurl 認證成功後重定向到此資源 a...

Shiro內建過濾器

執行 web 應用時,shiro會建立一些有用的預設 filter 例項,並自動地在 main 項中將它們置為可用 這些可用的預設的 filter 例項是被 defaultfilter 列舉類定義的 列舉的名稱字段就是可供配置的名稱 這些過濾器分為兩組 u 認證過濾器 anon 不認證也可以訪問 a...