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;