Code Monkey home page Code Monkey logo

yangzongzhuan / ruoyi Goto Github PK

View Code? Open in Web Editor NEW
5.3K 74.0 1.7K 11.48 MB

:tada: (RuoYi)官方仓库 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用

Home Page: http://ruoyi.vip

License: MIT License

Batchfile 0.05% Java 23.82% JavaScript 33.68% CSS 6.40% HTML 36.01% Shell 0.04%
springboot spring mybatis shiro thymeleaf bootstrap java jquery druid swagger

ruoyi's Introduction

logo

RuoYi v4.7.8

基于SpringBoot开发的轻量级Java快速开发框架

平台简介

一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。

性别男,若依是给女儿取的名字(寓意:你若不离不弃,我必生死相依)

若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。

内置功能

  1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
  2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
  3. 岗位管理:配置系统用户所属担任职务。
  4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
  5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  7. 参数管理:对系统动态配置常用参数。
  8. 通知公告:系统通知公告信息发布维护。
  9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  10. 登录日志:系统登录日志记录查询包含登录异常。
  11. 在线用户:当前系统中活跃用户状态监控。
  12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
  14. 系统接口:根据业务代码自动生成相关的api接口文档。
  15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  16. 缓存监控:对系统的缓存查询,删除、清空等操作。
  17. 在线构建器:拖动表单元素生成相应的HTML代码。
  18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

在线体验

  • admin/admin123
  • 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。

演示地址:http://ruoyi.vip
文档地址:http://doc.ruoyi.vip

演示图

若依交流群

QQ群: 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群 加入QQ群

ruoyi's People

Contributors

3440626 avatar 721806280 avatar aher1 avatar cschenzz avatar cyf783 avatar deng-cc avatar easyprogramming avatar gebron avatar geekymv avatar hbwf avatar jaycezou avatar jiabei1991 avatar john-chan avatar jyking avatar leonhardt92 avatar liaobaoxin avatar liuhulu avatar p19971018 avatar racsu avatar richmoster avatar tenchiwuyo avatar tiamohf avatar ucox-studio avatar xjt283525476 avatar yangzhengze avatar yangzongzhuan avatar yu1183688986 avatar zhangmrit avatar zhengxl5566 avatar zirylee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ruoyi's Issues

swagger using IP access will cause /csrf 404

From what I could figure out from the source code of swagger-ui it can work without those endpoints. Basically it uses the base url to search in the html for a csrf meta information or if that fails it checks an endpoint /csrf to check for csrf token. As last the cookies are checked if some contains the XSRF-TOKEN value

solution:

  1. Shiroconfig file release permission
    filterChainDefinitionMap.put("/swagger-ui.html", "anon");<br/> filterChainDefinitionMap.put("/swagger-resources/**", "anon");<br/> filterChainDefinitionMap.put("/v2/**", "anon");<br/> filterChainDefinitionMap.put("/webjars/**", "anon");

  2. Reduce swagger to 2.8.0

  3. Add cross domain lifter

  4. Modify the swagger configuration of ResourcesConfig
    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");

生成代码,报模板错误

Lexical error, Encountered: after : "" at vm/vue/index.vue.vm[line 515, column 0]
org.apache.velocity.exception.ParseErrorException: Lexical error, Encountered: after : "" at vm/vue/index.vue.vm[line 515, column 0]
下面是我的数据库字段表
image
再页面上点击会出现如下的错误
哪里出错了呢?
image

在service上自己list组装数据时,没有分页

在service层,如:
List list =new ArrayList<>();
list.add(user1);
list.add(user2);
return list;
在controll层,写:
startPage();
List lists=userService.selectUserList(Vo); (在这一步,没有分页处理)
getDataTable(list);

定时任务日志显示问题

现在定时任务的日志消息里只是记录了一个task总共耗时了多少毫秒,能将task里输出的一些log也记录在job_message里吗?这样前台定时任务的日志管理里也能更好的看到task的运行详细情况。

用户查询大问题

当我一个用户有4个角色 ,我用户集合有8条 这样我left join 角色表会查出11条 进行了分页 ,恰好那有四个角色的用户查询在上面 那么我userList的不会出现8条数据,只有7条,因为分页了下个用户在下一页,那个用户有三个角色的映射到了用户的roles里面了

正常运行,登录后台,显示jwt:null

按照文档配置好,正常运行后,无法登录后台,显示如下信息,是什么原因?
6:55:27.859 [http-nio-8081-exec-14] INFO c.r.f.s.w.f.BJwtFilter - [getToken,93] - jwt:null

首页重叠

实例按钮---- 表单 --- 选择 -弹出404 点首页,会和原来首页重叠

导出多个sheet页报表

请问一下,如果我想多出多个sheet页的报表应该怎么实现?sheet也的字段不一样

生成代码

生成代码的时候 能不能加个指定类型的

image

还有 后台 字段信息 java类型 没有 Boolean类型

image

注册逻辑

能说下注册的逻辑吗?为什么注册会走缓存,sys_config:sys.account.registerUser这个key里面存的是什么?

解析spring.datasource.druid.initialSize失败

在windows打包成jar包后,在linux环境运行java -jar 报如下错误,确认initialSize有配置

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
16:35:33.877 [main] ERROR o.s.b.SpringApplication - [reportFailure,858] - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroFilterFactoryBean' defined in class path resource [com/ruoyi/framework/config/ShiroConfig.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'authorizationAttributeSourceAdvisor' defined in class path resource [com/ruoyi/framework/config/ShiroConfig.class]: Unsatisfied dependency expressed through method 'authorizationAttributeSourceAdvisor' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/ruoyi/framework/config/ShiroConfig.class]: Unsatisfied dependency expressed through method 'securityManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'menuService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'menuServiceImpl': Unsatisfied dependency expressed through field 'menuMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'menuMapper' defined in URL [jar:file:/data/htdocs/java/sit.jar!/BOOT-INF/classes!/com/ruoyi/project/system/menu/mapper/MenuMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]: Unsatisfied dependency expressed through method 'sqlSessionFactory' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dynamicDataSource' defined in class path resource [com/ruoyi/framework/config/DruidConfig.class]: Unsatisfied dependency expressed through method 'dataSource' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'masterDataSource' defined in class path resource [com/ruoyi/framework/config/DruidConfig.class]: Unsatisfied dependency expressed through method 'masterDataSource' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'druidProperties': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.druid.initialSize' in value "${spring.datasource.druid.initialSize}"
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:493)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:240)
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:707)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at com.ruoyi.RuoYiApplication.main(RuoYiApplication.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

缩放菜单卡顿

当前端页面数据量大时,如登录日志,当一页显示50条时就已经产生卡顿感,数据量更大时卡顿明显

editable开启行内编辑

1、开启editable编辑,如果是金额格式成333,333,333。再回显应该现实原始,不应该是格式化的值。如果是格式化的金额无法提交

很赞!

文档清晰,笔录也很棒,虽然都是一些基础问题,但是都是很多人容易犯的。作者很用心。给个赞!

数据权限问题

一个用户有多个角色,每个角色的数据权限都不一样,这时候dataScopeFilter方法中会读取到2个不同的role的datascope,造成使用混乱

例如新建了2个角色,菜单权限不同,2个角色中包含了同一个人,数据权限都是仅限本人。这时候sql中会出现AND (u.user_id = 2 OR u.user_id = 2 ) 拼装了2次,这个算问题吗?

There is CSRF, which can change any account password

As shown in the figure below, there is user management function
image
When constructing the following malicious page

<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="localhost/system/user/resetPwd" method="POST">
      <input type="hidden" name="userId" value="1" />
      <input type="hidden" name="loginName" value="test" />
      <input type="hidden" name="password" value="12345678" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

When the administrator is induced to visit the page, any account password can be reset

父子表的checkbox怎么解决联动问题?

请问若依 使用bootstrapTable父子表的时候,子表已经成功显示在父表中,但父表上的checkbox无法选择到子表中的数据,父子表的checkbox怎么解决联动问题?

1.选择父表checkbox 子表全选 子表如果没有全选中 父表不选中
1.包括父表全选的时候 子表也联动全选 子表不全选中时 父表不选中 父表全选也不选中
请大神帮忙

首页重复使用thymeleaf内联方式[[]]直接获取系统默认主题,未能体现浏览器缓存判断

在htymeleaf里面使用内联方式[[]],在页面初始化的时候都会预编译,所以说每次在刷新页面的时候,不管以下的判断怎么处理,thymeleaf都会根据[[]]里的处理去调用后台方法获取系统主题,这样也占用资源消耗,也体现不出local storage本地缓存的多大作用。
image
建议在这里不要用这种内联方式加载后台方法获取属性,直接用ajax请求略佳
image

注册的问题

注册功能提交时input框name为username 但提交的时候是logName接收, 但都是只提交了一个名字, 由于数据库设置两者均不能为空,也没有默认值,故会报错.

关于路由添加

请问如果我想在菜单管理页面添加一个主类目的按钮,也就是左侧菜单点击直接出来个页面,需要怎么设置呢?我按照别的子组件来设置貌似不对!它打开了一个全新的页面!
WX20191125-155117@2x

关于多数据源的坑

在开发过程中发现,即使配置了使用多数据源,但是依然报错。日志打印切换了数据源,但实际还是用的原数据源。最后发现是方法注释了@transaction导致了出错。最终将事务注释去掉就没问题了。
举例:
A(),注释使用数据源Slave。
B() { A() },注释了@transaction。最终导致内部的A还是用了数据源Master,没用Slave。将B方法上的事务去掉就OK了。

希望在多数据源的文档里说明这种情况,避免其他兄弟踩坑。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.