关于毕业设计的整理
关于毕业设计的想法
在毕业设计的题目,我是比较纠结的,有想过利用.Net Core和Google Optimization Tools去做一个智能调度排班系统的,但后来经过深入的了解,发现智能调度排班系统并没有那么容易实现.回忆大学生涯,学生网管这个工作其实还在给我带来了不少的回忆.于是就决定开发一个网络故障报修系统.
采用的架构
一直有开发一个前后端分离的系统的想法,刚好借这个机会去尝试一下,就决定采用前后端分离的开发模式.服务端采用Asp.Net Core WebApi,前端采用Vue+Router+Element ui+axios.
关于跨域
问题原因
既然使用了前后端分离的架构,不可避免的就是跨域访问的问题.前后端可能不在同个server上,即便是在同个server上,由于前后端分离,前后端对应的端口号也可能是不一样的,所以跨域访问是必须的.
解决方案
服务端是基于Asp.Net Core开发的WebApi,支持cors非常方便,只需要引入Microsoft.AspNetCore.Cors,问题就很轻易的解决了.
在Startup.cs中ConfigureServices方法中添加Cors服务,在Configure方法中使用Cors服务
1
2
3
4
5
6
7
8
9public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options => options.AddPolicy("Domain", builder => builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors("Domain");
}
关于用户权限
问题原因
在系统中涉及到不同的角色,它们之间的权限不一样,对应的菜单也就存在着差异.关于权限的部分,有着几种不同的解决方案,一种是在前端预设写死页面的权限设置,前端通过后台返回的角色信息,生成对应的菜单,另一种则是在后台动态配置权限,当用户登录时,根据角色信息,后端返回一个对应的权限表,前端通过权限表生成对应的菜单.
解决方案
在本系统中,采用的是后一种解决方案,前端中存在完整的路由表,用户在登录后,获得相应的路由信息,根据路由信息去比对完整的路由表,生成当前用户可访问的页面,通过router.addRoutes动态挂载到router上.
关于前端
系统的前端是基于vueAdmin-template进行二次开发,修改了其关于用户权限的设置
关于服务端
系统的后端采用的是Asp.Net Core WebApi,MVC模式,架构分为BLL(业务层)-Dal(数据访问层),数据库访问是通过EF Core实现.使用EF Core Code Frist 创建数据库,使用Migrations完成对数据库的迁移..Net Core MVC三层架构框架里面架构进行了详细介绍.
Token
系统中,登录成功后,服务端会返回一个 token(该token的是一个能唯一标示用户身份的一个key),之后我们将token存储在本地cookie之中,这样下次打开页面或者刷新页面的时候能记住用户的登录状态,不用再去登录页面重新登录了。
实现方案
LoginControllers.cs
1 |
|
appsettings.json
1 |
|