整合到web

z這些是整合需要的包POM.XML

<!-- shiro核心包 -->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.2.5</version>
    </dependency>
    <!-- 添加shiro web支持 -->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-web</artifactId>
        <version>1.2.5</version>
    </dependency>
    <!-- 添加shiro spring支持 -->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring</artifactId>
        <version>1.2.5</version>
    </dependency>

引入shiro過濾器在web.xml中

<!-- 添加shiro過濾器 這里的filter-name 要和spring 的applicationContext.xml 里的
org.apache.shiro.spring.web.ShiroFilterFactoryBean 的bean name 相同-->
  <filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <!-- 該值缺省為false,表示聲明周期由SpringApplicationContext管理框弛,設(shè)置為true表示ServletContainer管理 -->
        <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>

修改spring配置 之前在ini里面寫的現(xiàn)在都在spring-bean里面寫了

<!-- shiro相關(guān)的配置 -->
<!-- 自定義Realm -->
    <bean id="myRealm" class="com.rr.realm.MyRealm"/>  
    
    <!-- 安全管理器 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  
      <property name="realm" ref="myRealm"/>  
      <property name="cacheManager" ref="cacheManager" />
    </bean>  
    
    <!-- Shiro過濾器 -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
        <!-- Shiro的核心安全接口,這個屬性是必須的 -->  
        <property name="securityManager" ref="securityManager"/>
        <!-- 身份認證失敗州泊,則跳轉(zhuǎn)到登錄頁面的配置 -->  
        <property name="loginUrl" value="/login.jsp"/>
        <!-- 權(quán)限認證失敗,則跳轉(zhuǎn)到指定頁面 -->  
        <property name="unauthorizedUrl" value="/unauthorized.jsp"/>  
        <!-- Shiro連接約束配置,即過濾鏈的定義 -->  
        <property name="filterChainDefinitions">  
            <value>  
           
               <!--  /login=anon
                /user/admin*=authc
                /user/student*/**=roles[teacher]
                /user/teacher*/**=perms["user:create"] -->
                /user/login.do=anon
                <!-- user下的所有內(nèi)容都需要身份認證 -->
                /user/*=authc
            </value>  
        </property>
    </bean>
參考一下這個配置
image.png
image.png

web.xml里面的shiro過濾器的名字要和springbean里面的過濾器名字一樣

spring-mvc增加相關(guān)配置窟勃,異常處理祖乳,注解開關(guān)處理

    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
    
    <!-- 生成代理,通過代理進行控制 -->
    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>
    <!-- 開啟Shiro注解,必須放在springmvc的配置文件中 -->
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">  
      <property name="securityManager" ref="securityManager"/>  
    </bean>
    
    <!-- 注解方式下的異常處理秉氧,身份認證異常處理眷昆、權(quán)限認證異常處理 -->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <!--登錄異常,跳轉(zhuǎn)到login.jsp-->
                <!-- <prop key="org.apache.shiro.authz.UnauthenticatedException">
                    /login
                </prop> -->
                <!-- 授權(quán)異常汁咏,跳轉(zhuǎn)到unauthorized.jsp -->
                <prop key="org.apache.shiro.authz.UnauthorizedException">/unauthorized</prop>
            </props>
        </property>
    </bean>

注釋:指定操作的需要的權(quán)限


image.png
image.png

6 Jsp中使用的shiro標(biāo)簽

需要引入標(biāo)簽

<%@ taglib uri="http://shiro.apache.org/tags" prefix="shiro" %>

標(biāo)簽:
<shiro:authenticated> 登錄之后
<shiro:notAuthenticated> 不在登錄狀態(tài)時
<shiro:guest> 用戶在沒有RememberMe時
<shiro:user> 用戶在RememberMe時
<shiro:hasAnyRoles name="abc,123" > 在有abc或者123角色時
<shiro:hasRole name="abc"> 擁有角色abc
<shiro:lacksRole name="abc"> 沒有角色abc
<shiro:hasPermission name="abc"> 擁有權(quán)限資源abc <shiro:lacksPermission name="abc"> 沒有abc權(quán)限資源
<shiro:principal> 顯示用戶身份名稱
<shiro:principal property="username"/> 顯示用戶身份中的屬性值

顯示用戶身份名稱是從這個realm中讀取的`

image.png

緩存設(shè)置

1)jar包

<dependency>
        <artifactId>ehcache-core</artifactId>
        <groupId>net.sf.ehcache</groupId>
        <version>2.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-ehcache</artifactId>
        <version>1.2.5</version>
    </dependency>

2)ehcache.xml配置文件導(dǎo)入
3)spring-bean引入

<!-- 緩存管理器 使用Ehcache實現(xiàn) -->
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <property name="cacheManagerConfigFile" value="classpath:ehcache.xml" />
    </bean>

記住我亚斋,不建議使用這個嘁字,不安全芍锚,一旦把緩存考走了擂啥,那不就可以登陸上了么晕城,注:這是用base64編碼還是密匙的形式保存的

spring-bean的配置窗看,這個安全管理器要是本來有了刹泄,改下就行了绿聘,不用再寫個爬凑,级解,冒黑,

<!-- 安全管理器 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  
      <property name="realm" ref="myRealm"/>  
      <property name="cacheManager" ref="cacheManager" />
      <property name="rememberMeManager" ref="rememberMeManager" />
    </bean>  

<!-- remenberMe配置 -->
    <bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
        <constructor-arg value="rememberMe" />
        <property name="httpOnly" value="true" />
        <!-- 默認記住7天(單位:秒) -->
        <property name="maxAge" value="604800" />
    </bean>
    <!-- rememberMe管理器 -->
    <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
        <property name="cipherKey" value="#{T(org.apache.shiro.codec.Base64).decode('4AvVhmFLUs0KTA3Kprsdag==')}" />
        <property name="cookie" ref="rememberMeCookie" />
    </bean>

name和value值不能改,這是有形式的

image.png

controller層的配置

image.png

spring-bean一定要用這個


image.png

修改springmvc配置

如果使用shiro的注解勤哗,必須將該配置放在springmvc的配置文件中抡爹,否則注解不起作用
<!-- 保證實現(xiàn)了Shiro內(nèi)部lifecycle函數(shù)的bean執(zhí)行 -->  
    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
    
    <!-- 生成代理,通過代理進行控制 -->
    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>
    <!-- 開啟Shiro注解,必須放在springmvc的配置文件中 -->
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">  
      <property name="securityManager" ref="securityManager"/>  
    </bean>
    
    <!-- 注解方式下的異常處理芒划,身份認證異常處理冬竟、權(quán)限認證異常處理 -->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <!--登錄異常,跳轉(zhuǎn)到login.jsp-->
                <!-- <prop key="org.apache.shiro.authz.UnauthenticatedException">
                    /login
                </prop> -->
                <!-- 授權(quán)異常民逼,跳轉(zhuǎn)到unauthorized.jsp -->
                <prop key="org.apache.shiro.authz.UnauthorizedException">/unauthorized</prop>
            </props>
        </property>
    </bean>
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泵殴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拼苍,更是在濱河造成了極大的恐慌笑诅,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吆你,居然都是意外死亡弦叶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門妇多,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伤哺,“玉大人,你說我怎么就攤上這事者祖×⒗颍” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵七问,是天一觀的道長蜓耻。 經(jīng)常有香客問我,道長烂瘫,這世上最難降的妖魔是什么媒熊? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮坟比,結(jié)果婚禮上芦鳍,老公的妹妹穿的比我還像新娘。我一直安慰自己葛账,他們只是感情好柠衅,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著籍琳,像睡著了一般菲宴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趋急,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天喝峦,我揣著相機與錄音,去河邊找鬼呜达。 笑死谣蠢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的查近。 我是一名探鬼主播眉踱,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霜威!你這毒婦竟也來了谈喳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤戈泼,失蹤者是張志新(化名)和其女友劉穎婿禽,沒想到半個月后赏僧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡谈宛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年次哈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吆录。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖琼牧,靈堂內(nèi)的尸體忽然破棺而出恢筝,到底是詐尸還是另有隱情,我是刑警寧澤巨坊,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布撬槽,位于F島的核電站,受9級特大地震影響趾撵,放射性物質(zhì)發(fā)生泄漏侄柔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一占调、第九天 我趴在偏房一處隱蔽的房頂上張望暂题。 院中可真熱鬧,春花似錦究珊、人聲如沸薪者。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽言津。三九已至,卻和暖如春取试,著一層夾襖步出監(jiān)牢的瞬間悬槽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工瞬浓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留初婆,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓瑟蜈,卻偏偏與公主長得像烟逊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铺根,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理宪躯,服務(wù)發(fā)現(xiàn),斷路器位迂,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • 1.1 spring IoC容器和beans的簡介 Spring 框架的最核心基礎(chǔ)的功能是IoC(控制反轉(zhuǎn))容器访雪,...
    simoscode閱讀 6,701評論 2 22
  • 在Android項目構(gòu)建了一個使用JavaPoet構(gòu)建源文件的注釋處理器的過程中详瑞。Android Studio將a...
    Mlethe閱讀 1,828評論 1 0
  • 今天是2017年2月27日坝橡,離今年的高考還有100天!這是一個敏感的天數(shù)精置。即將參加高考的學(xué)子敏感著计寇,學(xué)子的家...
    只有夢知道閱讀 270評論 0 0