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讲解

posted on 2019-06-20 17:46  falcon_fei  阅读(323)  评论(0编辑  收藏  举报