一、前言

毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的。之前实习时主要是做.NET的B/S架构的项目,主要还是用的那种传统的开发模式,只有一个项目用到了Web API,自己负责后端的接口功能实现。既然现在没办法改变现状,那就先改变自己吧。定了个计划,下班后慢慢的开始学习ASP.NET Core Web API和Vue,准备从前端到后端自己写一个小项目玩玩,毕竟代码这个东西,时间长了是会忘的。
        嗯,有点扯远了。这个MVC项目是我的毕业设计,虽然写的比较烂,而且当时为了赶紧写完,代码的冗余程度有点高,但还是希望能给一些准备入门ASP.NET Core MVC的童鞋提供些借鉴吧。代码我放到Github上了,源码地址https://github.com/Lanesra712/Danvic.PSU,欢迎大神们拍砖,指出不足处。

 二、项目介绍

毕业论文的课题是一个大学生的一个报名系统,主要是为了完成大学生报名过程中的一些数据维护,当然最后因为实在来不及了,好多都没做。。。项目主要使用到的相关技术如下所示:

  • 项目框架:ASP.NET Core 2.0 MVC

  • ORM:Entity Framework Core(使用Code First)

  • 数据库引擎:MySQL SERVER 5.7

  • 权限验证:基于策略的权限验证(Policy-Based Authorization)

  • 前端框架:AdminLte(一个基于Bootstrap的开源前端UI)

  • 表格控件:Jquery Datatables

  • 数据可视化组件:Echarts

  • 日志记录:nlog

 三、设计与实现介绍

项目架构采用的是多层架构,通过拆分不同的功能领域,实现各个功能间的相对独立,项目在VS中搭建完成后如下图所示。

01_Entity:实体层,包含PSU.Entity这一个系统组件,用于存储数据库中表所对应的C#对象实体。
        02_Infrastructure:基础架构层,包含PSU.EFCore、PSU.Utility两个系统组件。PSU.EFCore类库通过引用Entity Framework Core来完成对于数据库的操作。PSU.Utility类库中包含系统开发过程中可能用到的帮助类文件。
        03_Logic:逻辑层,包含PSU.Domain、PSU.Repository两个系统组件。PSU.Domain用于继承每个领域的接口类库(PSU.IService),实现领域接口中的功能。PSU.Repository用来实现PSU.Domain类库中所包含的对于数据库的操作。
        04_Rule:规则层,包含PSU.IService、PSU.Model这两个系统组件。PSU.IService为系统领域功能接口类库,PSU.Model为视图所对应的数据充血模型,对应MVC模式中的实体Model。
        Controller.PSU:控制器层,.NET Core类库,用来存放MVC模式中的各种控制器文件。
        PSU.Site:表现层,ASP.NET Core MVC项目,项目主程序。

系统权限验证设计:
        整个系统分为三种角色,分别为管理员、教职工、学生用户,通过使用Area搭建每个角色的页面,通过在Controller上添加Area特性,指定当前Controller属于的角色。在创建用户时,会指定用户的角色字段,当用户登录成功后,会根据用户角色进行Claim的创建,通过自定义的AuthorizztionHandler来实现对于当前系统的角色权限控制。
        当用户登录成功后,会将当前的用户信息赋值给一个静态类(使用Session进行存储),对于判断用户是否登录,则是通过自定义一个控制器的基类,重写OnActionExecuting方法来实现对于用户是否登录的判断,实现代码如下。

权限验证代码如下截图所示:
        控制器示例图:

基于策略的权限验证实现:

自定义验证Claim:

 四、总结

接下来我要开始学习ASP.NET Core Web API和Vue了,希望可以保持住,能够不间断的在博客上分享自己的学习经历与见解。当学的差不多的时候,争取把这个项目精简,重构,让自己在成为更好的自己的路途上前进一大步。
        因为也是第一次使用ASP.NET Core MVC进行项目的开发,所以遇到了一些自己没办法解决的东西,很感谢博客园里的各位大佬以及一些帮助我的大佬,正是因为有这么多乐于分享的人在,才能更好的推动.NET Core在国内的生态发展,在写毕业设计的过程中,参考了很多位博主的博文,真的是很感谢,致敬。

   还是要推广下自己的个人博客啊,点击这里,去看看我的博客啊~~~

项目实现图如下。

原文地址:https://www.cnblogs.com/danvic712/p/9349583.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

ASP.NET Core 2.0 MVC项目实战相关推荐

  1. ASP.NET Core 2.0 : 三. 项目结构

    ASP.NET Core 2.0 : 三. 项目结构 原文:ASP.NET Core 2.0 : 三. 项目结构 本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Cor ...

  2. ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现

    from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...

  3. ASP.NET Core 技术内幕与项目实战读后感

    前几天拿到了杨中科老师的新书<ASP.NET Core 技术内幕与项目实战>,迫不及待的"两"口气读完了.用一句话来总结,这是一本写给.NET开发者的非常实用的接地气的 ...

  4. Asp.Net Core 6.0 Mvc入门 图书查询系统 附带源码下载

    Asp.Net Core 6.0 MVC 入门 简介 目标 第一章 创建Asp.Net Core Web应用 第二章 从Model开始 第三章 Model之后皆基架 第四章 运行应用 第五章 数据搜索 ...

  5. 《ASP.NET Core技术内幕与项目实战:基于DDD与前后端分离》读后感一

    由于自己菜鸡,只能任由社会摆布,自学一段时间JAVA想去找JAVA工作,突然一份.NET Core的工作摆在面前,还好有点学历,虽然C#已经不太记得,领导仍然放我进去了.开始的一段时间,各种摸项目,也 ...

  6. ASP.NET Core 2.0 MVC 发布部署--------- ASP.NET Core 发布的具体操作

    ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择"文件" > "新建&q ...

  7. ASP .NET Core 2.0 MVC 发布到 IIS 上以后 无法下载apk等格式的文件

    ASP .NET Core MVC 发布到  IIS 上以后 无法下载apk等格式的文件 使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上 ...

  8. ASP.NET Core 2.0 使用支付宝PC网站支付

    概述 支付宝有比较多的支付产品,比如当面付.APP支付.手机网站支付.电脑网站支付等,本次讲的是电脑网站支付. 详细 代码下载:http://www.demodashi.com/demo/11730. ...

  9. ASP.NET Core 2.0 支付宝当面付之扫码支付

    前言 自从微软更换了CEO以后,微软的战略方向有了相当大的变化,不再是那么封闭,开源了许多东西,拥抱开源社区,.NET实现跨平台,收购xamarin并免费提供给开发者等等.我本人是很喜欢.net的,并 ...

最新文章

  1. 区分什么是Apache、Tomcat,之间有什么关系?
  2. 【转】JNI学习积累之一 ---- 常用函数大全
  3. 用jsp开发web应用并不是一个高效率的选择
  4. 水滴公司更新招股书:发行价区间为10-12美元
  5. Rails源码笔记-ActiveSupport-core_ext-array
  6. 【问题解决:死锁】Lock wait timeout exceeded; try restarting transaction的问题
  7. gmail api 发送邮件_Node定时自动发邮件功能
  8. vue使用a标签下载文件_vue+iview 通过a标签实现文件下载
  9. python调用pyd_Python import / pyd / dll
  10. 小菜成长记---【proxy 代理模式 ---西门庆干潘金莲——王婆做代理】
  11. vulnhub靶机-DC7-Writeup
  12. latex如何绘制标准三线表 lllegal charactor in array arg 如何合并单元格?
  13. 北美Developer生存发展攻略
  14. 中国移动首次明确的LTE终端频率要求
  15. FreeType解析矢量字体存在的问题以及优化技巧
  16. 怎么下载微信朋友圈的ppt存为己用
  17. Vue掌握到什么程度才能进大厂?
  18. 中软国际面试题及答案
  19. php能做彩票走势图么,如何用EXCEL制作彩票走势图?
  20. 在线 加密解密 工具

热门文章

  1. little tricks(持续更新)【python】
  2. java遇见的问题分析
  3. 网页中插入javascript的几种方法
  4. cursor 的moveToFirst和moveToNext和moveToPrevious以及moveToLast
  5. JQuery上传插件Uploadify使用详解
  6. js 操作cookies 方法
  7. WPF 实现截屏控件之移动(二)(仿微信)
  8. Kubernetes应用程序开发认证(CKAD) 经验分享
  9. C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①
  10. 帮助阅读源码的8个技巧