项目目标部署环境:CentOS 7+css
项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginxhtml
开源地址:https://github.com/wmowm/nh.core前端
上篇咱们已经讲了权限管理的实现,传送门:mysql
此次我换一种讲解,项目与博客,二者同时进行,gogogojquery
第一步,找个酷炫的登陆页面linux
本身写页面是不可能的,这辈子都不可能的,设计又不会,css又不精通,只有在jq22上面偷页面才能维持的了生活的样子nginx
最近的那个猫头鹰捂眼睛挺火啊,就是它了,先偷回来,再本身改造git
先在mvc项目里建立一个登陆github
话说.net core添加视图是真心慢啊,要等半天,趁这时间吐槽一下web
页面也很是简单,抄袭过来是这个样子,咱们对它改造一下
改造效果以下
坑1字体图标问题
我也不知道它这个字体图标怎么选,先F12看看它是什么玩意
原来是这个,百度一下,如今最新的都是4.7了,我之前用的是4.4,干脆直接把之前的拿来用了
如今继续去实现验证码功能,仍是用咱们比较熟悉的GDI+绘制图片
在.net core里须要引入ZKWeb.System.Drawing包,据说部署到linux上,会有毛病,这个咱们后面部署的时候再说
每次点击验证码,都会获取新的图片,而后把这个验证码md5加密保存到session里面
HttpContext.Session.SetString("pic_code", pic_code);//存入session
会直接报错
Session 尚未在这个应用程序或请求中配置好。
直接百度就好,园子里大神真是多,我是参考这篇文章实现的
如今作一个简单的提交,之前咱们都是习惯这样ajax提交表单,.net core里已经没有了这种方式,那没办法,咱们只有换一种形式了
据说jquery-ajax-unobtrusive.js这个插件不错,用的玩玩,效果还不错
<form asp-controller="Home" asp-action="Login" data-ajax="true" data-ajax-mode="replace" data-ajax-loading="ValidateLog" data-ajax-success="tips(data)" data-ajax-method="post" class="container offset1 loginform">
验证码成功,就跳转到home/index页面,失败就刷新验证码,并给出提示
//登陆回调函数 function tips(data) { if (data.status == "0") { window.location.href = data.returnUrl; } else { $("#imgcode").attr("src", "/Home/GetAuthCode?time=" + Math.random()); alert(data.msg); } }
咱们继续优化它,还须要一个好看的loading,直接去jq22上面找,而后整合到外面项目中来
放在这里,效果仍是挺不错的,而后完美继续优化弹出的提示框
作到这里基本上实现了整个功能,先将它发布到Linux上,看看效果
苦逼了,nginx这块尚未弄好,如今是一次只能代理一个端口,晚上继续研究
2018-4-25 8:21
关于nginx,网上资料不少,是本身弄复杂了,如今简单说下
最后一段,引入服务器的配置信息,它会读取/conf.d/目录下全部包含conf后缀的配置文件
default.conf 内容以下:
这里代理转发了两个站点,映射端口分别为8081与80,如今尚未作静态资源转发
说说昨天遇到最大的深坑IIS Express崩溃,一个晚上都在弄,太可怕了
说说IIS Express崩溃的一些怪象
怪象1.没法正常的生成解决方案,会报错程序被占用,我必须手动关掉IIS Express进程
怪象2.mvc路由絮乱
咱们直接说怪象2,怎么一个絮乱呢,举个栗子,mvc路由设置/home/index 为初始页面,此时我输入/home/login显示的内容仍是index的内容,并且调试不会命中断点
除了启动的时候,会命中/home/index的控制器断点,后续全部刷新都不会命中断点,尝试用不一样浏览器排除了缓存,加上GUID,发现每次GUID的值都会变化,前端抓包,排除301转发
重启电脑,也没法解决
没办法了,我只能让群友那边跑个人代码,有两位群友跑过,显示正常,我意识到多是个人iis容器出现了问题,我尝试直接使用控制台做为容器,一切正常
作完这个,发现一个因细节疏忽,致使js出错,这个错误又调试了很久
模板页的引用,母版页引用会致使js冲突,项目中可能同时存在两个相同的jq引用,致使部分方法失效,因此必定要检查是否使用母版页
如不使用母版页,页面加上
@{ Layout = null; }
以为对你有帮助的,能够去给我开源项目点个星星
开源地址:https://github.com/wmowm/nh.core