開源項目學習

vue與權限系統整合

vue如果集成在java項目中,不單獨部署,如何與java項目整合(包含菜單權限管理)?

Vue相關基礎內容

  • Vue.extend

由於沒法像單獨的vue項目那樣,直接寫component組件,在這裏可以使用Vue.extend. 有了這個組建構造器,使用 Vue.component('menuItem',menuItem); 進行註冊,就可以在項目中使用了。

springboot下配置多環境配置文件

在springboot項目下,想要區分開發、測試、預發、生產環境如何實現呢?
在application.yml配置文件中增加 spring.profiles.active即可。同時添加對應的配置yml文件如下圖:
blob.jpg
在本項目中,默認只有開發環境(dev)和生產環境(prod)
在開發中,application.yml文件中配置成開發環境dev,如下圖:
blob.jpg

那麼在打成jar包,發佈時應該如何指定對應的環境呢?

java -jar web-1.0.0.jar --spring.profiles.active=prod

在使用java -jar啓動jar程序的時候,加上spring.profiles.active 即可。

菜單設計與展示

角色、權限系統設計

可視化quartz定時任務

雲存儲文件上傳

字典管理、系統管理

各種問題雜記

url中帶#表示什麼意思?

簡單來說,對於服務器來說,#後面的被自動忽略了,訪問的url還是#號前面的,如:http://localhost:8080/renren-admin/index.html#modules/sys/dept.html 來說,服務器接收到的請求還是http://localhost:8080/renren-admin/index.html ,那#後面的是給到瀏覽器用的,相當於錨點的概念。
解析參見: https://www.cnblogs.com/kaituorensheng/p/3776527.html#_label0

idea的git插件忽略無意義的項目配置等文件

在FILE->SETTINGS->PLUGINS 中安裝.ignore插件,然後新建.ignore文件,如下圖
blob.jpg

@ConditionalOnProperty 註解

blob.jpg

shiro部分


2.1.1 Subject
Subject一詞是一個安全術語,其基本意思是“當前的操作用戶”。稱之爲“用戶”並不準確,因爲“用戶”一詞通常跟人相關。在安全領域,術語“Subject”可以是人,也可以是第三方進程、後臺帳戶(Daemon Account)、定時作業(Corn Job)或其他類似事物。它僅僅意味着“當前跟軟件交互的東西”。但考慮到大多數目的和用途,你可以把它認爲是Shiro的“用戶”概念。
在程序中你都能輕易的獲得Subject,允許在任何需要的地方進行安全操作。每個Subject對象都必須與一個SecurityManager進行綁定,你訪問Subject對象其實都是在與SecurityManager裏的特定Subject進行交互。
2.1.2 SecurityManager
Subject的“幕後”推手是SecurityManager。Subject代表了當前用戶的安全操作,SecurityManager則管理所有用戶的安全操作。它是Shiro框架的核心,充當“保護傘”,引用了多個內部嵌套安全組件,它們形成了對象圖。但是,一旦SecurityManager及其內部對象圖配置好,它就會退居幕後,應用開發人員幾乎把他們的所有時間都花在Subject API調用上。
那麼,如何設置SecurityManager呢?嗯,這要看應用的環境。例如,Web應用通常會在Web.xml中指定一個Shiro Servlet Filter,這會創建SecurityManager實例,如果你運行的是一個獨立應用,你需要用其他配置方式,但有很多配置選項。
一個應用幾乎總是隻有一個SecurityManager實例。它實際是應用的Singleton(儘管不必是一個靜態Singleton)。跟Shiro裏的幾乎所有組件一樣,SecurityManager的缺省實現是POJO,而且可用POJO兼容的任何配置機制進行配置 - 普通的Java代碼、Spring XML、YAML、.properties和.ini文件等。基本來講,能夠實例化類和調用JavaBean兼容方法的任何配置形式都可使用。
2.1.3 Realms
Shiro的第三個也是最後一個概念是Realm。Realm充當了Shiro與應用安全數據間的“橋樑”或者“連接器”。也就是說,當與像用戶帳戶這類安全相關數據進行交互,執行認證(登錄)和授權(訪問控制)時,Shiro會從應用配置的Realm中查找很多內容。
從這個意義上講,Realm實質上是一個安全相關的DAO:它封裝了數據源的連接細節,並在需要時將相關數據提供給Shiro。當配置Shiro時,你必須至少指定一個Realm,用於認證和(或)授權。配置多個Realm是可以的,但是至少需要一個。
Shiro內置了可以連接大量安全數據源(又名目錄)的Realm,如LDAP、關係數據庫(JDBC)、類似INI的文本配置資源以及屬性文件 等。如果缺省的Realm不能滿足需求,你還可以插入代表自定義數據源的自己的Realm實現。
象其他內部組件一樣,由SecurityManager來管理如何使用Realms來獲取安全的身份數據。


shiro 與thymeleaf整合

添加引用

        <dependency>
            <groupId>com.github.theborakompanioni</groupId>
            <artifactId>thymeleaf-extras-shiro</artifactId>
            <version>2.0.0</version>
        </dependency>

使用方法如<a shiro:hasPermission="sys:menu:save" class="btn btn-primary" @click="add"><i class="fa fa-plus"></i> 新增</a> 當用戶具有menu的保存權限才顯示這個a標籤

thymeleaf 模板替換路徑問題

<header th:replace="../templates/layout/header :: head"></header>
<header th:replace="../templates/layout/header :: head"></header>
使用上面的幾個路徑一直提示找不到模板 template might not exist or might not be accessible by
因此跟源碼看了下,進行替換比對的代碼在AbstractConfigurableTemplateResolver 這個類下面(如下圖)
blob.jpg
調試發現,前綴用的是classpath:/templates/ 即,這個模板相對路徑是相對於templates的
blob.jpg

因此thymeleaf在找模板的時候會自動湊夠templates文件夾目錄尋找,我們的路徑應當寫成
<header th:replace="layout/header :: head"></header>
項目結構圖如下:
blob.jpg

內置過濾器

blob.jpg
https://www.cnblogs.com/koal/p/5152671.html

idea查看依賴關係

在pom文件中,右鍵——》show Dependencies
blob.jpg
blob.jpg
像下面這種紅色的表示依賴有問題的,。比如說多次引用等,但是隻要不影響編譯,不發生報錯的其實也不一定非得排除例外。不然,太多了。
blob.jpg

驗證碼

添加kaptcha 的依賴包

        <dependency>
            <groupId>com.github.axet</groupId>
            <artifactId>kaptcha</artifactId>
            <version>${kaptcha.version}</version>
        </dependency>

配置類:

   @Bean
    public DefaultKaptcha producer() {
        Properties properties = new Properties();
        properties.put("kaptcha.border", "no");
        properties.put("kaptcha.textproducer.font.color", "black");
        properties.put("kaptcha.textproducer.char.space", "5");
        Config config = new Config(properties);
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }

詳細使用方式見: https://www.cnblogs.com/java-spring/p/7793149.html

jpa中表關聯

如存在實體類SysUserEntity,要體現部門人員關係,需要在SysUserEntity中增加字段 private SysDeptEntity sysDeptEntity;如何配置使得jpa的sql能夠自動查詢帶出來呢?

    @OneToOne() //這裏因爲一個用戶只會屬於一個部門,所以用的OneToOne
    @JoinColumn(name="dept_id")     //這裏爲2個表關聯條件字段
    private SysDeptEntity sysDeptEntity;

@OneToMany、@ManyToOne以及@ManyToMany講解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章