1. 程式人生 > >Shiro @RequiresRoles註解不生效解決方案及相應設定

Shiro @RequiresRoles註解不生效解決方案及相應設定

剛開始整合的時候@RequiresRoles和@RequiresPermissions註解一直不生效,只能進入方法之後在程式碼中判斷

        Subject subject= SecurityUtils.getSubject();
        try {
            subject.checkPermissions("add","update");
        }catch (UnauthorizedException e){
            log.info("錯誤資訊:"+e.getMessage());
            //TODO 定義錯誤處理頁面
            log.info
("許可權不足"); }

後來查了下發現註解必須必須要使用相應的bean才能生效:

    @Bean
    public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
        return new LifecycleBeanPostProcessor();
    }

    @Bean
    public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator(){
        return
new DefaultAdvisorAutoProxyCreator(); }

網上搜的時候這倆bean是在一起的,LifecycleBeanPostProcessor 是管理shiro生命週期的,不直接跟許可權註解關聯。所以加上DefaultAdvisorAutoProxyCreator 這個bean就可以了。

在程式碼中通過subject控制跟使用註解兩種方式功能是一樣的,但是有些時候必須要用註解:

    @RequiresRoles(value={"admin","user"},logical = Logical.OR)
    @RequiresPermissions(value
={"add","update"},logical = Logical.AND)

如果有多個許可權/角色驗證的時候中間用“,”隔開,預設是所有列出的許可權/角色必須同時滿足才生效。但是在註解中有logical = Logical.OR這塊。這裡可以讓許可權控制更靈活些。

如果將這裡設定成OR,表示所列出的條件只要滿足其中一個就可以,如果不寫或者設定成logical = Logical.AND,表示所有列出的都必須滿足才能進入方法。

用subject這種通過程式碼控制的方法我沒有深入瞭解,所以沒有找到這種許可權的控制。再加上使用註解更加簡潔明瞭,所以個人更傾向於使用註解方式來控制。

相關推薦

Shiro @RequiresRoles註解生效解決方案相應設定

剛開始整合的時候@RequiresRoles和@RequiresPermissions註解一直不生效,只能進入方法之後在程式碼中判斷 Subject subject= SecurityUtils.getSubject();

Mysql grant all privileges on ...生效解決方案

.com nts 本地 all 圖片 info 技術分享 原因 虛擬機 情景:我在mac的終端下用ssh操作虛擬機中的centos,mysql運行在centos中 mysql -u root -p 用root登錄mysql後 使用 grant all privileg

Servlet4.0 註解生效解決

bubuko 不生效 let TE 一個 路勁 mage xxxxx 解決 當我們創建好一個4.0的servlet 生成的註解大概是這樣 name=xxxxx 默認的是不具有效果的 你可以有兩種方式 1.去掉屬性name,3.0就是這樣子的 2.非要

input的blur事件隱藏div,div上的onclick事件生效解決方案

之前做一個專案,點選當獲取input輸入框的焦點時,將之前搜尋的列表顯示,失去焦點時隱藏這個列表,列表上有點選事件進行搜尋【不使用外掛和框架】。 問題:點選列表的時候不觸發列表的點選事件? <input type="text" name="" onfocus="show(

Linux 時間修改生效解決方案

linux 修改系統時間命令 date -s 例如: date -s “20161001 10:00:00” 將系統時間修改為2016年10月1日早上10點整。 Q: 執行完命令

php安裝擴展模塊後,重啟生效的原因解決辦法

... star nmp har 成功 config ces .... conf 在lnmp運維環境中,我們經常會碰到有些php依賴的擴展模塊沒有安裝,這就需要後續添加這些擴展模塊。在擴展被安裝配置後,往往會發現php-fpm服務重啟後,這些擴展並沒有真正加載進去!下面

RabbitMQ中的消費者處理訊息HandleDelivery生效的原因解決辦法

今天遇到一個問題就是在使用rabbitMQ的時候,消費者接受了訊息但訊息處理函式沒有執行也就是handleDelivery沒有執行,也沒有報錯。 之後看了原始碼才發現,引數名字改了 可以看到在沒有加AMQP之前handleDelivery是灰色的,所以它沒有

IntelJ idea下lombok 生效的問題(@Builder等註解生效的問題)解決,lombok Plugin外掛安裝

緣由,專案在IDEA下@Data、@Builder註解不起作用。發現是lombok這個jar包的問題。具體這個jar的應用場景自行去百度。 發現依賴的jar包maven已經下載。在網上看原來是外掛問題。 @Builder註解沒起作用,原因就是需要安裝外掛。 外掛安裝方

spring mvc @Transaction註解生效解決

     spring的註解極大的方便了配置bean,將以前繁瑣的工作簡化,其中使用@Transaction註解進行事務管理更是方便,網上和各種書籍中講解@Transaction註解使用方法的文章更是

myEclipse可以main執行,能debug,能用Junit測試--解決方案原因

今天,寫完任務時,打算單元測試一下,發現執行@Test下的方法後,雖能自動跳到JUnit視窗,但是Runs是0/0,Errors:0,Failures:0,原本顯示綠或紅的進度條也沒反應,我就蒙了,怎麼會不能用呢? 不能用junit測試,那就寫個main也能實現測試的目的,

mac下Tomcat安裝啟動,瀏覽器卻打解決方案

第一步:下載 Tomcat 1. 選擇版本號 在右側 Download 選擇版本號。 下面,我選擇版本8作為演示 2. 並下載(選擇 zip 或 tar.gz 均可,注意別下載 windows 版本了點選下面的連結直接下載也行): Core: ·      zip (

Zabbix2.4安裝部署、編碼翻譯準確解決方案

RoCE -m 英漢互譯 tle root dbn 數據庫名 all 安裝位置 本地做yum源[root@localhost /]# tar zxf zabbix2.4.tar.gz -C / 將zabbix2.4解壓到/下[root@localhost /]# crea

TortoiseSVN資料夾檔案圖示顯示解決方案

安裝完TortoiseSVN後發現SVN倉庫程式碼資料夾沒有相關圖示變化,找到相關的解決方法: 方法一:TortoiseSVN設

Vs2017獲取Git空倉庫後創建解決方案項目無法推送,推送失敗的問題.

eve src 無法 技術 項目 http developer 方案 更改 與Git無關,因為遠程是空文件夾,導致沒有遠程版本做對應提示更改或怎樣,必須在創建人創建倉庫的時候上傳文件代碼. https://d

Spring配置文件裏xsd找到時解決方案

images ... multi col card 源碼 ota match spring配置 今天導入了大神的Dubbo框架,分析下源碼案例發現報錯: 錯誤: Multiple annotations found at this line: - cvc-compl

fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞 最終解決方案VS10.12CLR選擇NET版本

mic c++ vs2008 soft globals oba target vs編譯 編譯 安裝多個VS 出現這個問題 fatal error LNK1123: 轉換到 COFF 期間失敗: 文件無效或損壞 。 VS2010和VS2012或者sv2008和VS2010,高

XAMPP本地服務器打解決方案

解決 cal 技術分享 http 9.png 成功 .com nbsp amp 第一步:先開啟相關服務:如圖 第二步:在瀏覽器上輸入localhost:端口號,(或127.0.0.1:端口號),按回車,就成功登陸本地服務器。 XAMPP本地服務器打不開解決方案

Win10系統下軟件UI顯示完整解決方案

key 解決 window 顯示不完整 行高 解決問題 存在 路徑 解決方案 方法摘錄如下 step1:打開註冊表 WIN+R,或者運行裏面輸入regedit step2:路徑[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

(轉)Spring事務處理時自我調用的解決方案一些實現方式的風險

上下 喜歡 wire print type service() str bug 銷毀 轉:http://www.iteye.com/topic/1122740 預備知識 測試代碼準備 問題 解決方案 1通過ThreadLocal暴露Aop代理對象 2通過初始化方法在目標對

sql執行內部操作期間檢測到一致性解決方案

服務 repair false 重啟 html -- 不一致 備註 操作 解決方法:重啟下SQL服務,把下面腳本運行即可。運行後,壞掉的數據庫可能會丟失。 --mydb 為壞了的數據庫名--mytable 為壞了的據庫表--master 這裏不需要更改 use mydb