vue與權限系統整合
vue如果集成在java項目中,不單獨部署,如何與java項目整合(包含菜單權限管理)?
Vue相關基礎內容
- Vue.extend
由於沒法像單獨的vue項目那樣,直接寫component組件,在這裏可以使用Vue.extend. 有了這個組建構造器,使用 Vue.component('menuItem',menuItem);
進行註冊,就可以在項目中使用了。
springboot下配置多環境配置文件
在springboot項目下,想要區分開發、測試、預發、生產環境如何實現呢?
在application.yml配置文件中增加 spring.profiles.active
即可。同時添加對應的配置yml文件如下圖:
在本項目中,默認只有開發環境(dev)和生產環境(prod)
在開發中,application.yml文件中配置成開發環境dev,如下圖:
那麼在打成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文件,如下圖
@ConditionalOnProperty 註解
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 這個類下面(如下圖)
調試發現,前綴用的是classpath:/templates/
即,這個模板相對路徑是相對於templates的
因此thymeleaf在找模板的時候會自動湊夠templates文件夾目錄尋找,我們的路徑應當寫成
<header th:replace="layout/header :: head"></header>
項目結構圖如下:
內置過濾器
https://www.cnblogs.com/koal/p/5152671.html
idea查看依賴關係
在pom文件中,右鍵——》show Dependencies
像下面這種紅色的表示依賴有問題的,。比如說多次引用等,但是隻要不影響編譯,不發生報錯的其實也不一定非得排除例外。不然,太多了。
驗證碼
添加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;