精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

spring+shiro搭建簡單安全框架

一、簡介:
shiro是一個安全框架,顧名思義就是對系統的訪問進行安全控制,包含用戶身份認證(登錄),用戶權限控制(通過角色,權限字符串等)。

成都創新互聯是一家企業級云計算解決方案提供商,超15年IDC數據中心運營經驗。主營GPU顯卡服務器,站群服務器,服務器托管,海外高防服務器,成都機柜租用,動態撥號VPS,海外云手機,海外云服務器,海外服務器租用托管等。

  權限里面很關鍵的兩個東西:認證和授權。
  1. 認證沒什么好說的,目的就是判斷用戶的賬號密碼是否正確之類的,授權的作用嘛,簡單的解釋就是給用戶賦予相應的權限。

  2. 判斷一個用戶有沒有權限訪問,無非是攔截URL能否訪問,分為以下幾個操作

①判斷當前URL是否需要攔截,不需要則放行,需要則進入下一步
②判斷用戶是否已登陸,有則下一步,無則拋出401未認證
④從資源表/權限表讀取當前登陸用戶的可訪問地址,進入下一步判斷是否包含用戶當前訪問的地址,有則放行,無則拋出403無權限。

二、簡單搭建
1.maven工程,版本自行選擇

org.apache.shiro
shiro-core
1.3.2


org.apache.shiro
shiro-web
1.3.2


org.apache.shiro
shiro-spring
1.3.2


org.apache.shiro
shiro-ehcache
1.3.2

2.配置web.xml,需要配置shiro特定的過濾器,主要作用是把所有的bean交給spring管理,通過spring容器來管理filter的生命周期,通過spring注入的形式,來代理一個filter執行,主要目的是,找到在spring中維護的目標filter。



shiro 權限攔截
shiroFilter
org.springframework.web.filter.DelegatingFilterProxy

targetFilterLifecycle
true



shiroFilter
/*

        


contextConfigLocation
classpath:conf/spring/spring-shiro.xml


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:rsf="http://www.suning.com/schema/rsf"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.suning.com/schema/rsf http://www.suning.com/schema/rsf/rsf.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">












exceptionResolver作用在于統一的異常捕捉。

ShiroDbRealm類中有doGetAuthorizationInfo(AuthenticationToken token) ,doGetAuthenticationInfo兩個方法,doGetAuthenticationInfo(PrincipalCollection arg0)作用在于登陸認證,包括用戶名和密碼的驗證,如果不做用戶名密碼的驗證。
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken upToken =(UsernamePasswordToken)token;
String userName=upToken.getUsername();
return new SimpleAuthenticationInfo(userName,
upToken.getPassword(),getName());

}

/**
 * 授權查詢回調函數, 進行鑒權但緩存中無用戶的授權信息時調用,負責在應用程序中決定用戶的訪問控制的方法
 */
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
    UserLoginBean user = (UserLoginBean) SecurityUtils.getSubject().getSession().getAttribute(LcssConstant.LOGIN_COMMAND);
    SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
    info.addRole(user.getRoleCode());
//權限編碼
    String authorityStr = CommonUtil.getAuthorityStr(user.getInitialFlag(), user.getRoleCode());

    List idList = new ArrayList<>();
    if(!StringUtil.isNullOrEmpty(authorityStr)){
        idList = Arrays.asList(authorityStr.split(","));
    }       
    info.addStringPermissions(idList);
    return info;
}

doGetAuthorizationInfo(PrincipalCollection arg0),每次controller層調用都會進入這個方法來判斷當前用戶是否有權限。如果有權限進入方法,沒權限拒絕訪問。

注解RequiresPermissions的使用:@RequestMapping("/addWorkOrderSureMessage.th")
br/>@RequestMapping("/addWorkOrderSureMessage.th")
RequiresPermissions放在controller層中,控制訪問,每次訪問當前方法,都會進入doGetAuthorizationInfo(PrincipalCollection arg0)進行權限認證,包含1001權限才能進入方法,否則驗證不通過。

三、總結:
Shiro可以幫助我們完成:認證、授權、加密、會話管理、與Web集成、緩存等。

Realm是Shiro的核心組建,也一樣是兩步走,認證和授權,在Realm中的表現為以下兩個方法。

認證:doGetAuthenticationInfo,核心作用判斷用戶名密碼是否正確
授權:doGetAuthorizationInfo,核心作用是獲取用戶的權限字符串,用于后續的判斷
Authentication:身份認證/登錄,驗證用戶是不是擁有相應的身份;

Authorization:授權,即權限驗證,驗證某個已認證的用戶是否擁有某個權限;即判斷用戶是否能做事情,常見的如:驗證某個用戶是否擁有某個角色。或者細粒度的驗證某個用戶對某個資源是否具有某個權限;


文章題目:spring+shiro搭建簡單安全框架
標題路徑:http://m.jcarcd.cn/article/pophcs.html
主站蜘蛛池模板: 国产丝袜视频 | 国产在线精品一区二 | 日韩在线播放专区 | 成人总合网 | 欧美午夜网 | 国产极品精品免费 | 中文字幕在线不卡 | 日韩免费网页版视频 | 91精品啪在线 | 国产精品+免费 | 日本三级强在线观看 | 午夜理论片精品国产 | 日本欧美一区 | 国产精品网站不卡在 | 波多野吉衣一区二区 | 日本精品aⅴ在线 | 91综合网。 | www.黄se| 九九免费视频 | 成人国产一区二 | 欧美日韩国产高清 | 国产真实乱对白精彩 | 动漫国产在线精品一 | 人人想人人甜97 | 国产综合亚洲免费 | 九九热线有精品视频 | 欧美影视三级亚洲 | 午夜免费福利体验 | 不卡在线一区二区 | 韩剧日剧在线看 | 日本乱码视频文字幕 | 福利九九 | 日本高清色本 | 精品在线一区二区 | 91啦中文成人 | 欧美日韩电影 | 区二区三区三 | 国产v的在线观看 | 精选国产911在线 | 国产主播在线观看网 | 国产日韩欧美中文 |