1. 程式人生 > >Shiro-1-原始碼分析一設計模式(簡單工廠)

Shiro-1-原始碼分析一設計模式(簡單工廠)

這裡先看看使用的原始碼
可以認為是資料庫的shiro.ini資料
格式:賬戶=密碼

[users]  
zhang=123  
wang=123  

主要程式碼

/**
 * @author riversky E-mail:[email protected]
 * @version 建立時間 : 2018/1/22.
 */
public class TestChar2 {
    @Test
    public void test(){
//        1,建立工廠
        Factory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro.ini"
); // 2利用工廠獲取SecurityUtils 工具類應該是使用的核心,這裡應該使用了將介面封裝進去,然後做了代理 SecurityManager manager=factory.getInstance(); SecurityUtils.setSecurityManager(manager); // 3使用代理工具類獲取Subject Subject subject=SecurityUtils.getSubject(); AuthenticationToken token=new UsernamePasswordToken("zhang"
,"123"); try{ //4登入,身份驗證 subject.login(token); }catch (AuthenticationException e){ //5身份驗證失敗 } // 6退出 subject.logout(); } }

原始碼中的結構如下
獲取subjecct
使用了工廠模式來對SecurityManager進行生成和配置
生成過程是使用單例+工廠
提供對外的工具類來使用,包含獲取SecurityManager的方法和獲取Subject的方法
subject的使用


subject的使用是通過傳入AuthenticationToken介面(注意是介面,其實擴充套件介面rememnverMeaut…和HostAutho…),該介面目前的實現類是UserPasswordToken,當然也可以自己擴充套件實現自定義的認證Token

相關推薦

Shiro-1-原始碼分析設計模式簡單工廠

這裡先看看使用的原始碼 可以認為是資料庫的shiro.ini資料 格式:賬戶=密碼 [users] zhang=123 wang=123 主要程式碼 /** * @aut

關於js的設計模式簡單工廠模式,構造函數模式,原型模式,混合模式,動態模式

nod nodejs 重新 作用域 this 一次 無法 typeof 訪問 <1>工廠模式 簡單來說就是封裝後的代碼,簡單的工廠模式是很好理解的,關於它的作用,就是利用面向對象的方法,把一些對象封裝,使一些占用空間多的,重復的代碼封裝起來。實現方法非常簡單,也

設計模式學習筆記(5) --計算器的設計模式簡單工廠工廠方法

1.面向過程的計算器 package com.skiff.www.factory.calculator; import java.util.Scanner; /** * @Auther: 一葉扁舟 * @Date: 2018/11/1 20:23 * @Description: 簡單

Atitit 前後端互動模式 目錄 1.1. Ajax 1 1.2. Fetch api 1 1.3. 服務端指令碼模式簡單快速 1 1.4. 瀏覽器注入物件、函式 1 1.5. 瀏覽器外掛模式

Atitit 前後端互動模式   目錄 1.1. Ajax 1 1.2. Fetch api 1 1.3. 服務端指令碼模式(簡單快速) 1 1.4. 瀏覽器注入物件、函式 1 1.5. 瀏覽器外掛模式 1 1.6. other 1   &

介面設計模式---工廠設計模式簡單工廠模式工廠方法模式、抽象工廠模式代理模式

介面設計模式-------工廠設計模式 工廠設計模式分為簡單設計模式和工廠設計模式。 簡單工廠模式 不想把new 放在主方法 專門定義一個類(第三方)用來建立其他類例項(解耦:抽取出來 ,將客戶端建立物件的操作解耦到外部第三方類),被建立的例項通常具有共同

C++筆記 UML/設計模式簡單工廠模式工廠模式

一、UML(統一建模語言) 模型:對問題的書面上的無歧義文字或圖形的描述,簡言之,模型是對現實的簡化。 建模:對現實系統進行適當的過濾,用適當的表現規則描述出簡介的模型問題。 UML:是一種基於面向物件的視覺化建模語言。UML採用了一組形象畫的額圖形符號作為建模語言,使

設計模式十四——模板模式SpringIOC原始碼分析

1 豆漿製作問題 編寫製作豆漿的程式,說明如下: 1) 製作豆漿的流程 選材--->新增配料--->浸泡--->放到豆漿機打碎 2) 通過新增不同的配料,可以製作出不同口味的豆漿 3) 選材、浸泡和放到豆漿機打碎這幾個步驟對於製作每種口味的豆漿都是一樣

設計模式十五——命令模式Spring框架的JdbcTemplate原始碼分析

1 智慧生活專案需求 看一個具體的需求     1) 我們買了一套智慧家電,有照明燈、風扇、冰箱、洗衣機,我們只要在手機上安裝 app 就可以控制對這些家電工作。 2) 這些智慧家電來自不同的廠家,我們不想針對每一種家電都安裝一個 App,分別控

設計模式十七——迭代器模式ArrayList 集合應用原始碼分析

1 看一個具體的需求 編寫程式展示一個學校院系結構:需求是這樣,要在一個頁面中展示出學校的院系組成,一個學校有多個學院, 一個學院有多個系。如圖: 2 傳統的設計方案(類圖) 3 傳統的方式的問題分析 1) 將學院看做是學校的子類,系是學院的子類,這樣實

設計模式二十三——策略模式Arrays原始碼分析

1 編寫鴨子專案,具體要求如下: 1) 有各種鴨子(比如 野鴨、北京鴨、水鴨等, 鴨子有各種行為,比如 叫、飛行等) 2) 顯示鴨子的資訊 2 傳統方案解決鴨子問題的分析和程式碼實現 1) 傳統的設計方案(類圖)      2)

C#設計模式之二十訪問者模式Visitor Pattern【行為型】

href 集中 動態 元素 lis 聲明 風格 on() 封裝 原文:C#設計模式之二十一訪問者模式(Visitor Pattern)【行為型】一、引言 今天我們開始講“行為型”設計模式的第九個模式,該模式是【訪問者模式】,英文名稱是:Visitor Pattern。如

Java設計模式之建立型模式工廠模式簡單工廠模式+工廠方法模式

在面向物件程式設計中, 最通常的方法是一個new操作符產生一個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。舉例來說,許多型別物件的建立需要一系列的步驟:你可能需要計算或取得物件的初始位置;選擇生成哪個子物件例項;或在你生成你需要的物件

【知識積累】設計模式建立型

定義公共介面和實現類: 一、工廠方法模式(Factory Method) 1、普通工廠模式 2、多工廠方法模式 3、靜態工廠方法模式 二、抽象工廠模式(Abstract Factory) 三、建造者模式(Builder)

自我聯想學設計模式初級版-1-觀察者模式

如果單純的看書,其實很容易陷入到各種概念中去,最終導致似乎懂了,但實際開始使用的時候又有各種問題。這個版本的設計模式只從實用來入手,就是在各種情況下,根據聯想快速的代入這個模式,能夠迅速用起來,轉化為程式碼。所以這個版本的設計模式都以現實中的例子自己聯想。 假設我以去電影院看電影為例,因為觀

設計模式--spring原始碼中使用策略模式Strategy Pattern

策略模式(Strategy Pattern)中體現了兩個非常基本的面向物件設計的基本原則:封裝變化的概念;程式設計中使用介面,而不是對介面實現。策略模式的定義如下: 定義一組演算法,將每個演算法都封裝起來,並且使它們之間可以互換。策略模式使這些演算法在客戶端呼叫它們的時

Javascript設計模式簡單工廠

建立型設計模式-簡單工廠模式 簡單工廠模式(Simple Factory):又稱之為靜態工廠模式,由一個工廠物件建立某一種產品物件類的例項。主要用來建立同一類物件。 多類單例項法 為了加深我們的理解,設定以下需求。假設一個大型超市賣各種東西,

大戰設計模式第二季1】———— 從源碼看工廠模式

new map 下一個 建議 mage 管理 增長 如果 per 前言 工廠模式其實在許多地方都有體現,是常見的一種設計模式。用一句話總結就是,當我們需要創建一些對象的時候,而創建的對象比較復雜或者同類型比較多,就可以使用它。 在我們看源碼的時候,有的時候看見XXXFa

8.原始碼分析---從設計模式中看SOFARPC中的EventBus?

我們在前面分析客戶端引用的時候會看到如下這段程式碼: // 產生開始呼叫事件 if (EventBus.isEnable(ClientStartInvokeEvent.class)) { EventBus.post(new ClientStartInvokeEvent(request)); } 這裡用

原始碼學習之設計模式單例模式

眾所周知,單例模式分為餓漢式和懶漢式,昨天在看了《spring5核心原理與30個類手寫實戰》之後才知道餓漢式有很多種寫法,分別適用於不同場景,避免反射,執行緒不安全問題。下面就各種場景、採用的方式及其優缺點介紹。 餓漢式 (絕對的執行緒安全) 程式碼示例 1.第一種寫法 ( 定義即初始化) public cl

Qt MVC設計模式五篇

net details blog 模式 mvc設計模式 sdn .net 設計 mvc http://blog.csdn.net/qq_19672579/article/details/46952675http://blog.csdn.net/qq_19672579/art