1. 程式人生 > >《許可權系列shiro+cas》----配置各個應用程式

《許可權系列shiro+cas》----配置各個應用程式

前言

  • shiro-cas-authority已經大體的介紹完畢,現在我們需要在各個應用程式之間來引用它實現許可權管理。

Cas客戶端與服務端的配置

  • cas的客戶端在shiro-cas-authority已經配置完成,我們配置cas的服務端時,可以將在原始碼上下載下來的cas資料夾放在tomcat的webapps目錄下,然後啟動tomcat,這樣cas的服務端就生效了。

原始碼地址

應用程式配置

配置shiro.properties

  • 每個應用程式都有自己的shiro.properties配置檔案,在每個shiro.properties中配置的是使用者登入成功後的預設訪問地址,登入失敗後預設訪問地址,以及casServer的地址等等,正是因為使用者在正確登入每個應用程式的時候訪問的預設地址不一樣,所以講shiro.properties單獨抽出來放在各個應用程式中。

應用程式的核心spring.xml檔案

<context:component-scan base-package="com.spring.app1.service"/>

<context:component-scan base-package="com.spring.app1.dao"/>

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="order" value="1"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/> <property name="locations"> <list> <value>classpath:jdbc.properties</value> <value>classpath:shiro.properties</value> </list> </property>
</bean> <import resource="spring-mybatis.xml"/> <!-- 引入shiro-cas-authority中的spring核心配置檔案 --> <import resource="classpath*:conf/spring-context-authority.xml"/>

應用程式的springmvc.xml檔案

<!-- 註解掃描 -->
    <mvc:annotation-driven />

    <context:component-scan base-package="com.spring.app1.controller"></context:component-scan>

    <!-- 配置檢視解析器 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 字首 -->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!-- 字尾 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- 靜態資源處理 -->
    <!-- <mvc:default-servlet-handler /> -->
    <mvc:resources location="/WEB-INF/js/" mapping="/js/**" />

    <!-- 支援Shiro對Controller的方法級AOP安全控制 begin -->
    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
    <property name="proxyTargetClass" value="true" />
 </bean>
<!-- 支援Shiro對Controller的方法級AOP安全控制 end -->
  • 在springmvc的配置檔案中,我們需要配置支援Shiro對Controller的方法級AOP安全控制,這樣我們在Controller中的方法上加shiro的資源註解時,shiro就會自動判斷使用者是否擁有此許可權。

後臺Controller方法

@RequestMapping("/course")
@Controller
public class CourseController extends BaseController {
    @Autowired
    CourseService courseService;

    @RequestMapping(value = {"/index"})
    public String index() {
        return "index";
    }


    @RequiresPermissions("query")
    @RequestMapping("queryAllCourse")
    @ResponseBody
    public List<Course> queryAllCourse() {

        List<Course> list =courseService.queryAllCourse();
        Course course=new Course();
        course.setComment("這是應用程式1查詢出來的Course");
        course.setCourseName("這是應用程式1查詢出來的Course");
        course.setId("1111111111111111111");
        course.setCreate_time(new Date());
        list.add(course);
        return list;
    }


    @RequiresPermissions("create")
    @RequestMapping("failureUrl")
    @ResponseBody
    public List<String> loninFailure() {
        List<String> list = Arrays.asList("這是登入失敗的後返回的結果","失敗結果1","失敗結果2");
        return list;
    }

    /**
     * 此方法admin沒有許可權訪問,因為資源授權中 沒有 delete
     * @return
     */
    @RequiresPermissions("delete")
    @RequestMapping("delete")
    @ResponseBody
    public List<String> deleteMethod() {
        List<String> list = Arrays.asList("這是登入失敗的後返回的結果","失敗結果1","失敗結果2");
        return list;
    }


    @RequestMapping("queryByAjax")
    @ResponseBody
    @RequiresPermissions("delete")
    public List<String> queryByAjax(String username,String content) {
        List<String> list = Arrays.asList("劉德華","張學友","黎明","郭富城");
        System.out.println(username);
        System.out.println(content);
        return list;
    }
}

啟動程式,訪問應用程式一(applicationOne)

  • 輸入地址後,程式會自動跳轉到cas的服務端,此時cas的登入頁就顯示出來了。
    這裡寫圖片描述

    輸入使用者名稱:admin
    密 碼:[email protected]
    登入成功後就會訪問index.jsp

    這裡寫圖片描述

  • 這個頁面就是測試用的所有方法,由於小編不能將專案中的所有原始碼都展示出來,所以小編只是將專案的框架抽離出來,展示個demo,讀者拿到這套框架後可以根據自己的業務來修改和擴充套件。

小結

  • 這一片部落格只是貼出了原始碼中的applicationOne中的程式碼,讀者可以將applicationTwo也啟動起來,這樣以來,當我們點選應用程式1中的跳往applicationTwo的時候,應用程式Two不會讓我們登入了,至此,跨域的單點登入已經實現。

相關推薦

許可權系列shiro+cas》----配置各個應用程式

前言 shiro-cas-authority已經大體的介紹完畢,現在我們需要在各個應用程式之間來引用它實現許可權管理。 Cas客戶端與服務端的配置 cas的客戶端在shiro-cas-a

許可權系列shiro+cas》----修改cas的預設登入頁

前言 cas的預設登入頁相對來說不怎麼友好,我們可以自己定做。 cas原始登入頁面 修改步驟 上面的頁面就是cas\WEB-INF\view\jsp\default\ui\c

《權限系列shiro+cas》---封裝公共驗證模塊

t對象 mode 轉換 關於 設計 下一步 lock 倒置 做的   操作系統:Windows8.1    顯卡:Nivida GTX965M    開發工具:Visual Studio 2017    Introduction    我們現在可以將任意屬性傳遞給每個頂點的

應用程式級別之外使用註冊為 allowDefinition='MachineToApplication' 的節是錯誤的。如果在 IIS 中沒有將虛擬目錄配置應用程式,則可能導致此錯誤。

最近在IIS伺服器部署站點時遇到了這樣的一個問題。 由於每次有新的網站之後,都要新建一個站點為其分配新的埠,這樣感覺挺不合理的,網站越來越多到最後都不記得哪個網站是哪個埠,所以我就想著能不能把所有網站專案統一放在一個資料夾下,這樣就只有一個埠,訪問網站時只需加上相關網站目錄

Docker在Linux上執行NetCore系列(五)更新應用程式 Docker在Linux/Windows上執行NetCore文章系列

轉發請註明此文章作者與路徑,請尊重原著,違者必究。         本篇文章與其它系列文章不同,為了方便測試,新建了一個ASP.Net Core檢視應用。       備註:下面

sharepoint 2016 學習系列篇(5)-建立一個應用程式網站

前面已經完成了整個sharepoint server 2016的安裝和配置,接下來,我們當然是要建立一個應用程式網站。 1.建立應用程式網站 開啟sharepoint管理中心,點選Applicatio

應用程式-特定許可權設定未將com伺服器應用程式(CLSID為{BA126AD-2166-11D1-00805FC1270E})

內心N煩躁; Event ID : 100016Source : DCOM The application-specific permission settings do not grant Local Activation permission for the COM Server applicati

應用程式中的一些配置許可權

給應用配置許可權: <uses-permission android:name="android.permission.CALL_PHONE" />//打電話的許可權<uses-permission android:name="android.permis

嵌入式ARM平臺基於Linux配置應用程式開機自啟動(fluxbox參考)

本文轉載於 http://www.eefocus.com/toradex/blog/18-01/426601_a6317.html,特此感謝 By Toradex秦海 1). 簡介 嵌入式ARM平臺裝置採用Embedded Linux作業系統

VC++ 學習筆記系列一CWinApp應用程式

基本資訊: CWinApp為應用程式類 MFC 中的主應用程式類封裝用於 Windows 作業系統的應用程式的初始化、執行和終止。基於 框架生成 的應用程式必須有且僅有一個從 CWinApp 派生的類的物件。在建立視窗之前先構造該物件。 CWinApp 是從 CWinThread 派生的,後者表示可能具

初識WCF之使用配置檔案部署WCF應用程式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

使用IE瀏覽器,禁止訪問,顯示 Internet Explorer增強安全配置正在阻止來自下列網站的從應用程式中的內容

使用一個新的Windows2008伺服器中的IE瀏覽器訪問頁面時,出現提示  Internet Explorer增強安全配置正在阻止來自下列網站的從應用程式中的內容,無法訪問頁面。 在“我的電腦”裡 找到管理工具,然後選擇伺服器管理,點選開啟。 點選  “

exe應用程式無法啟動,因為應用程式的並行配置不正確

問題:exe應用程式無法啟動,因為應用程式的並行配置不正確。有關詳細資訊,請參閱應用程式事件日誌,或使用命令列 sxstrace.exe 工具。 原因查詢: 1)開始→所有程式→附件→右鍵命令提示符→以管理員身份執行 2)輸入sxstrace.exe Trace -logfile:C

Kubernetes系列之四:使用yaml檔案建立deployment來部署一個應用程式到k8s叢集

目的 從零開始開發一個超小的應用,將它打包成一個image,利用yaml檔案部署到kube叢集中。 具體的思路是:在開發環境中,打算建立一個node.js應用程式,因為使用它可以讓我的程式足夠簡單,然後使用dockerfile去建立一個docker image,再將它push到doc

Kubernetes系列之三:部署你的第一個應用程式到k8s叢集

部署你的第一個應用程式到k8s叢集 看到這裡,求知慾飢渴難耐的你一定在想,怎麼部署的我們應用程式到叢集裡面去呢?來個簡單的,只需要兩步:(這裡本文使用nginx映象當我們的應用程式,因為nginx 簡單,執行起來後直接可以用瀏覽器訪問網頁了。) 第一步:在master 節點上建立一個

許可權設計文章彙總 應用程式許可權設計 擴充套件RBAC使用者角色許可權設計方案 java使用者角色許可權設計

  如何設計網站許可權系統? https://www.zhihu.com/question/20313385/answer/118095995 我的轉載:https://www.cnblogs.com/hao-1234-1234/p/9850967.html 應用程式許可權設計 http:

根據登錄檔讀取應用程式配置檔案,根據XML文字動態生成樹狀列表,自定義SAP GUI登入頁面

 技術要點 1.根據SAPGUI應用程式名動態讀取登入配置檔案的絕對路徑,如果應用程式未安裝,則提示相應訊息。 2. 根據獲取的路徑得到配置檔案的XML文字字串,其中包含所有的登入資訊,呼叫上一篇日誌解析XML的類方法,得到登入介面結構的文件例項 3.通過文件例項利用控制

Ionic在應用程式啟動前讀取應用程式啟動之前的配置檔案,避免程式碼頻繁編譯

1.app.module.ts 2.app.config.ts 1.新建app.config.ts檔案 2.內容: import { Inject, Injectable } from '@angular/core'; import { Http } from '@angular/

從0到1使用Kubernetes系列(四):搭建第一個應用程式

上一篇文章《從0到1使用Kubernetes系列(三):使用Ansible安裝Kubernetes叢集》中,我們搭建了一套Kubernetes叢集,接下來將在本文中介紹如何使用Kubernetes部署一個Nginx並通過Pod IP、Service IP、Ingress這三種方式訪問Nginx。 傳統Kube

VS開發應用程式控制windows服務安裝、解除安裝、啟停 許可權問題

一、VS可能出現的錯誤提示:     ServiceController無法開啟計算機**上的**服務。   二、原因 編寫的應用程式許可權不夠,無法控制系統windows服務。 三、解決: