日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示...

發布時間:2025/3/20 编程问答 27 豆豆

1?課程計劃

1、?常見權限控制方式

2、?基于shiro提供url攔截方式驗證權限

3、?realm中授權

4、?基于shiro提供注解方式驗證權限

5、?總結驗證權限方式(四種)

6、?用戶注銷

7、?基于treegrid實現菜單展示

2?常見的權限控制方式

2.1?url攔截實現權限控制

shiro基于過濾器實現的

?

?

2.2?注解方式實現權限控制

底層:代理技術

?

?

?

3?基于shirourl攔截方式驗權

?

?

?

<!-- 配置過濾器工廠 -->

<bean?id="shiroFilter"?class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">

<!-- 注入安全管理器 -->

<property?name="securityManager"?ref="securityManager"></property>

<!-- 注入相關頁面

loginUrl :登陸頁面=用戶沒有登錄,訪問某個url(要求當前用戶登陸后可見)shiro框架跳轉登錄頁

????successUrl;登陸成功頁面=可以不配(通過struts2框架跳轉)

????unauthorizedUrl;權限不足頁面=用戶登陸后訪問url(要求必須有某個權限),如果用戶沒有權限,跳轉此頁面

?-->

<property?name="loginUrl"?value="/login.jsp"></property>

<property?name="unauthorizedUrl"?value="/unauthorized.jsp"></property>

<!-- 配置過濾器鏈:配置項目中url對應攔截規則(怎么驗權) -->

<!--

等號左側代表項目url????/** 項目中所有url

等號右側代表url經過哪個過濾器(shiro框架提供,使用簡稱即可)

authc:表單認證過濾器(訪問url,要求當前用戶必須認證通過后才有權限訪問)

anon:匿名過濾器(訪問url,不需要登陸,不需要有權限==直接放行)

perms:權限授權過濾器(訪問url,要求當前用戶必須有某個權限)

roles:角色授權過濾器(訪問url,要求當前用戶必須有某個角色)

?-->

<property?name="filterChainDefinitions">

<value>

/js/** = anon

/images/** = anon

/css/** = anon

/login.jsp = anon

/validatecode.jsp* = anon

/userAction_login.action = anon

/pages/base/standard.jsp = perms["standard_page"]

<!-- /courierAction_delete.action = perms["courier_delete"] -->

/pages/base/courier.jsp = roles["admin"]

/** = authc

</value>

</property>

</bean>

訪問:使用權限過濾器perms 攔截到用戶請求后,而當前用戶沒有任何權限

?

?

4?realm中授權

?

通過url控制權限:當某個請求需要進行權限校驗,角色校驗時候,安全管理器會調用reaml中授權的方法;獲取用戶角色,以及權限。

?

?

?

/**

?

??* @Description: 給用戶進行授權

?

*/

?

protected?AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

?

System.out.println("給用戶授權");

?

//獲取當前用戶

?

User user?= (User) SecurityUtils.getSubject().getPrincipal();

?

//數據庫結構 用戶-角色:多對多 ?角色-權限:多對多 ?可以根據用戶id查詢用戶權限

?

//TODO?給用戶授權只能是硬編碼 ?,后期改為查詢數據庫

?

?

?

//創建簡單授權信息(包含當前用戶對應的權限,角色)

?

SimpleAuthorizationInfo info?= new?SimpleAuthorizationInfo();

?

//添加權限標識,注意這里不能添加空白權限

?

//跟過perms濾器中,要求權限標識一樣

?

info.addStringPermission("courier_page");

?

info.addRole("admin");

?

return?info;

?

}

?

?

?

1?基于shiro的注解方式驗權

?

?

?

?

1.1?開啟shiro注解支持

?

<!-- 開啟shiro注解支持 -->

?

<!--

?

自動代理:自動根據情況不同選擇代理技術

?

有接口:使用jdk動態代理==產生實現類代理對象

?

沒有接口:使用cglib動態代理==產生子類代理對象

?

設置自動代理:強制使用cglib動態代理產生代理對象==如果使用自動代理使用jdk動態代理。產生對象為null -->

?

<bean?class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">

?

<property?name="proxyTargetClass"?value="true"></property>

?

</bean>

?

?

?

<!-- 配置驗權切面:通知/增強(擴展功能代碼:驗證權限)+切點(shiro注解所在方法) -->

?

<bean?class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"></bean>

?

?

?

?

1.2?Service中方法上使用shiro注解

?

?

?

?

?

?

驗證當前用戶是否有權限,當沒有權限時候,shiro框架拋出異常;

?

解決:在Realm中給用戶進行授權;給當前用戶增加權限即可

?

?

?

?

?

?

?

?

?

1.3?使用struts2框架處理異常信息

?

?

?

?

?

?

?

?

?

?

?

?

?

?

2?總結權限控制方式

?

1、?url攔截:底層基于過濾器;在spring容器中配置過濾器鏈,配置項目中url對應攔截規則,注意:配置順序

?

?

?

?

?

?

2、?注解方式:底層基于動態代理

?

a)?第一步開啟shiro注解掃描 注意:強制使用cglib方式;事務注解也要使用cglib方式

?

b)?第二步:service層中方法上使用shrio注解

?

3、?Shiro頁面標簽控制

?

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

?

?

?

?

4、?代碼級別

?

?

?

?

3?Shiro框架應用

?

?

1?基于shiro框架實現用戶注銷

1、?修改index.jsp頁面退出時的請求地址

?

?

?

2、?Action中提供logout方法

?

?

?

?

2?菜單的查詢

項目部署后,菜單數據,通過sql腳本直接添加到數據庫中。

?

?

菜單表自關聯;

?

?

1.1?treeGrid展示菜單數據

?

?

?

Treegrid要求的數據格式

?

?

?

1、?頁面:pages/system/menu.jsp

?

?

2、?創建菜單三層對象-完成注入?–

3、?問題一:由于要求返回json包含children 并且方式 出現No-session

?

?

4、?解決:將子節點數據立即加載

?

?

5、?json數據時候死循環

?

?

6、?問題:重復數據

Servie:

?

?

?

?

轉載于:https://www.cnblogs.com/shan1393/p/9250720.html

總結

以上是生活随笔為你收集整理的项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。