iDashboard-基于 Laravel5.3 的后台管理
iDashboard - Laravel5.3基本的权限管理系统
基于Laravel5.3的后台管理系统,实现最基本的后台框架:权限、角色、菜单、用户、日志功能,后台主题是用的 INSPINIA - Responsive Admin Theme 主题,本人代码完全开源,至于主题只供学习交流。如需商业应用请自行购买授权!
待解决问题
- 后台验证码图片显示不出来问题(目前注释掉了验证码验证。。)
安装
下载本项目代码到本地:
git clone https://github.com/lanceWan/iDashboard.git
进入到项目然后 composer
安装:
cd iDashboard
composer install
配置 .env
文件:
[sudo]cp .env.example .env
Linux 和 Mac 下注意执行权限 !
配置数据库和日志:
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
# log日志包配置,这里固定这么写(后面考虑去掉)
APP_LOG=daily
迁移数据:
php artisan migrate --seed
OK,项目已经配置完成,直接访问首页然后登录即可,验证码验证已经注释掉,所以大家请暂时无视那个验证码图片显示不出来的问题,不清楚路由的可以直接去看 routes/web.php
文件。默认管理员账号:iwanli
, 密码:123456
如果你是在Linux或Mac下配置的请注意相关目录的权限,这里我就不多说了,enjoy!
扩展包
l5-repository 只用了最基本的功能,其他的功能都不想用,强迫症 :smile: ,觉得更少的代码就能实现 。 至于那些 CRUD 一键生成的扩展,看过代码,代码模式不是自己想要的,所以抛弃了。。。
更新计划
在 Laravel5.2 iAdmin 基础上升级为 Laravel5.3
,同时优化了很大一部分代码,代码模式更改。本后台打算一直更新下去并持续集成,下面是接下来要添加的功能:
- 后台首页统计相关信息
- 系统报错发送邮件(队列发送)
- 系统配置功能
- 即时通知
Media Manager
资源管理(本地和七牛)- 在线 IM 聊天
- 基于
iDashboard
的个人博客计划 - 基于
iDashboard
代码将css、js用 Laravel Elixir 管理。Blade视图与 Vuejs2.0 结合管理
OK,这是目前想要完善的地方,可能冒出其他的灵感。待续...
源码地址
github : https://github.com/lanceWan/iDashboard
osChina : https://git.oschina.net/iwl/iDashboard
有没有兴趣参考一下tita )
@泽 什么? 没看懂 :flushed:
@lanceWan 一个企业管理平台~
功能是越来越强大了啊,必须支持下~~
力力加油
你猜我是谁
@tablecell 添加用户那块我好想忘了改逻辑了。。。。。不好意思 我马上改过来,忘了加密了 :bowtie:
@墨韵留香 我怎么知道你是谁。。。。 只知道是群里面的 :laughing:
@tablecell OK了,问题已经修复了。已经更新到了github和osChina上,非常感谢反馈!
@tablecell
/login
的路由是用php artisan make:auth
默认生成的路由,routes/admin/*
是菜单高亮用的 不是路由@tablecell ...
auth
是Laravel已经继写好的开箱即用功能,你要看只能去看官方文档和Laravel里面的登录源码了@tablecell 对的 直接修改这个也可以 还有一种办法就是指定login页面的视图
用上 vue 嘛!
账号密码不正确。
系统日志和 log-viewer 很像。
@ruooooooli Vue 在计划中
@zhuzhichao 就是用那个扩展,我上面也说了的。只是改了一下页面更适合主题,然后添加了权限控制
谢了兄弟
力力加油!!!!!!!! 你猜猜我是谁
@semb :sweat:
如果有无权限的模块隐藏就好了+_+ 那就完美的不要不要的了
@xhh110 昨天更新了,没有权限的话左侧菜单是看不到了。
@lanceWan 好的 我去试试。。。
厉害了
TokenMismatchException in VerifyCsrfToken.php line 68:
楼主我按你的步骤去操作,然后输入账号和密码后出现这个错误
@hdruner 有几个人也是这样报错,我自己安装的时候不会出现。现在都没法调试。。。
@hdruner 我google了一下,官方的Issue中也有很相同的问题。都是token不存在,目前找到的方法:
.env
文件中的APP_URL
和SESSION_DOMAIN
具体看这个链接最下方 https://github.com/laravel/framework/issue...您需要打开app/Http/Kernel.php并注释掉\App\Http\Middleware\VerifyCsrfToken::class
我通过上面的方法暂时解决了错误,但是我输入密码登陆后会无限重定向到登陆页面。。
@lanceWan
我确认了我的session文件是可写入的,然后删除了storage里面的session文件
刷新页面,发现一个新的session文件,打开对比发现_token value是匹配的。session文件如下
a:4:{s:6:"_token";s:40:"2OSNdH1OAngddXxBIiO52jjty5wrnUI8fDM0okxw";s:9:"_previous";a:1:{s:3:"url";s:27:"http://localhost:8899/login";}s:9:"_sf2_meta";a:3:{s:1:"u";i:1479143789;s:1:"c";i:1479143789;s:1:"l";s:1:"0";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
其中我也把.evn里面的APP_URL 改成 http://localhost:8899 我应用的url了。但是问题依然没有解决
@lanceWan
我进入到错误抛出的文件 /Users/hedongrun/Project/test/iDashboard/bootstrap/cache/compiled.php
找到了tokensMatch()这个方法,通过打印发现input的_token值和session()里面的_token值的确不一样,不过我尚未清楚是什么导致的。我通过简单的方法跳过了一个验证,但是又有了新的错误抛出
@lanceWan 新的错误提示如下
Class guest does not exist
我明天在再安装一个laravel5.3校验一下是不是我的环境导致了一系列的问题
@hdruner 我google到很多人跟你一样,有的电脑可以,有的电脑不行,具体解决办法基本上没找到。这个官方估计会在下一版本解决吧
没有sql文件啊..我还要去猜你用什么字段了么/= =..
@迷河 :disappointed_relieved: 你用过Laravel没? 你这个问题我很尴尬。。。
@迷河 好像找到了。。在migrations里。。我要研究一下。。
@lanceWan 第一次啊!
@lanceWan 嘿嘿
我也登陆不进去,老是报TokenMismatchException 错误 。然后测试了一下,发现为什么session存储不了?
@半夏 存储不了确定一下你的目录权限
session的目录权限是可写的啊 感觉问题好像是_token值每次刷新都变化 所以session存储不了 这是为什么啊 我发现5.1不会有这个问题,试了5.3的源码也是这样的?
@lanceWan
@半夏 这个奇怪的问题很多人和你一样, 不知道是电脑原因还是什么环境影响了。目前我再官方的issue中还没看到解决办法。。。。。
看了看代码,受益匪浅,能问几个问题吗?
为什么自带的几个控制层 ,都是依赖注入了service呢,为什么不直接写在controller里面呢。
还有用这个l5-repository扩展的好处在哪里呢。
@ADKi 这个我是根据项目复杂度来的,我们公司项目这样写会很好维护和扩展,如果项目结构简单不必要这么写。我只是习惯这样写了,所以用5.3的时候来练手而已。。。
那l5-repository扩展的好处 的好处呢,我看模型层都继承这个
@ADKi 这个扩展封装了很多常用的方法,比如数据库的增删改查,不需要你去重复的定义所有仓库都适用这些,避免多人协作的时候很有用。毕竟规范、代码都一样,出错也少了很多
再问一下,是不是跟laravel 自带的Eloquent ORM 类似
实质上就是用ORM封装的方法而已
希望我这段留言可以鼓励你继续前进,怎么说呢,看了你的博客和github然后找到你在优酷的1-9教学视频,然后看完再去bilibili看你剩下的,给点意见呢就是视频可以表达得更加流畅一点,不过看完觉得贵在实在,仔细和扫盲,有真正站在一个入门人的角度去讲,所以我觉很好。而美中不足就是视频可以再表达得好一点,可以看看laravist.com的作者的视频,看完有留意到视频的评论和关注,有关注但却没有什么评论,我可以在这里大胆的告诉你,你的视频是很多人看的,希望你可以继续做下去,谢谢!:grimacing:
@任宝宝 哈哈,谢谢建议。这是第一次讲,本人也比较内向,所以表达上面不流畅。我还在慢慢适应中,最近也参照别人的视频做了一些改进。有你们支持我会坚持下去的~~
如果更换了ORM,哪些地方要修改?
我看service 注入的是Eloquent,那以后这些service都要改一遍吗?
@tlcolorful 为什么要都改一边? 你改ORM改的是Model吧,只要将model换掉不就行了吗
那app/Repositories下 单独弄一个Eloquent是什么意义呢?
我认为的是service应该注入app/Repositories/Contracts
@tlcolorful 简单项目这样写肯定是多余的, 我只是为了保持我的代码风格还是加了一层。你觉得不好的话可以按照你的想法来就行了
@lanceWan 没有,就是不明白,没有不喜欢的意思。请解说一下 谢谢啊
@tlcolorful 我将逻辑处理和数据库操作分开了,现在service里面只从所有的repository中拿数据然后进行相关逻辑判断。而repository只负责从数据库里面读写数据和特殊处理一些数据。比如一些int类型要转换成字符串,json类型转换成数组等等
@lanceWan 在Repositories文件夹下加入Eloquent,Contracts等文件夹,是不是以后新的orm建立一个新的文件夹,然后实现Contracts里面的东西?那么在service依赖注入的应该是Contracts,然后在服务提供者进行捆绑?
还是说我的理解有问题?
@tlcolorful 我并没有用Laravel的服务模式,用的是PHP本身的依赖注入
@lanceWan 我表达的这个思想有问题吗? 还是像你说的,更换ORM替换model层就可以了,这些地方都不用改的。
@tlcolorful 更换model只用在Eloquentd的repository里面更改里面的
model()
方法的class就行了@lanceWan 好的 谢谢
vue版安装报错了
@Kr科 前端node方面我真的无能为力。。。。。 只能靠你自己了
这个类是在哪里载入的哦,我查看了从route——>controller——>service都没有看到引入的,在控制器中测试发现应该是在views里面引入的,但是又找不到哦!
@Kr科 这个是composer视图共享全局数据,你看文档就知道了
是否支持Laravel5.4?
@MZ07 不支持,这个是5.3版本的
composer install 出错了~ 难道是我镜像源有问题?