.net core
- 创建一个.net Frameword项目模板如下:
- 创建.net core项目模板如下:
用 .NET Core MVC 创建一个类的示例代码:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
这是一个简单的 Person 类,包含三个属性:Id、Name和Age。其中,属性Id和Age为整型,属性Name为字符串类型。同时,这些属性也都定义了 get 和 set 访问器,以便使用该类的其他代码可以读取和修改这些属性值。
EF core 的appsettings.json配置连接数据库的字符串:
再进行迁移,生成数据访问层:
EF更新数据库命令,在控制台里分别执行以下两行代码
add-migration init:这个命令生成迁移文件(记录着对数据库的更改)
Update-Database:这个命令更新到数据库
在Vue项目调接口:
更新数据库:
在前端调用接口,后端的解决跨域问题:
//解决跨域
string[] vueUrl = new string[] { "http://localhost:8080" };
//addPolicy方法不行,必须使用AddDefaultPolicy
services.AddCors(op => { op.AddDefaultPolicy(set => { set.WithOrigins(vueUrl).AllowAnyHeader().AllowAnyMethod().AllowCredentials(); }); });
解决中文乱码问题:
.AddJsonOptions(options =>
{
//解决中文输出后乱码,设置支持所有字符集
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
});
用JWT实现权限验证流程:
1.客户端使用用户名和密码请求登录
2.服务端收到请求,验证用户名和密码
3.验证成功后,服务端会签发一个token,再把这个token返回给客户端
4.客户端收到token后可以把它存储起来,比如放到cookie中或者本地存储(local storage)
5.客户端每次向服务端请求资源时需要携带服务端签发的token,可以在cookie或者header中携带
6.服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,就向客户端返回请求数据
接口安全验证
JWT(全称:Json Web Token),一种认证机制,实现了我们的登录验证流程,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名(加密)信息,接收后可以校验是否被篡改
JWT结构
JWT由3部分组成:标头(Header)、有效载荷(Payload自己定义的信息)和签名(Signature)。在传输的时候,
会将JWT的3部分分别进行Base64编码后用.进行连接形成最终传输的字符串
实现中间件:
1.通过app.Use自定义中间件,app.Use执行完后可以继续往下执行其他的中间件
app.Use(async (context, next) => {
await next.Invoke();
});
2.App.Run自定义中间件,app.Run这里执行完就结束了,终止下一步的执行,也就是不会执行在它后面的中间件
app.Run(async context => { await context.Response.WriteAsync("Hello from 2nd delegate."); });
授权过滤器:
授权,用于验证请求是否有权限访问对应的Action,一般包含登录验证、菜单权限(即接口权限)验证等 。
使用:在startUp文件里面配置,对所有的控制器都有效果,包括后面新增的
编程思路方面,.NET强调面向对象的设计模式,这是我的关键收获之一。在.NET中,一切都是基于对象,因此设计对象并学习如何组织和管理对象是非常重要的。在我的学习中,我发现.NET的面向对象设计风格和其他编程语言不同。所以我必须学会.NET提供的概念,例如接口,抽象类等,以及如何将它们有效地应用于程序设计中。这样可以提高程序可维护性和可扩展性,确保项目实现的功能能够更好地适应需求的更改和发展。
技巧运用方面,我学会了如何将C#(.NET开发语言)的优秀特性和.NET的强大功能应用于代码中。例如,要避免在代码中写入硬编码语句,可以使用.NET提供的配置文件进行系统配置。这样可以更轻松地管理系统配置,并使代码变得更加易于维护和扩展。此外,我还学会了如何使用.NET提供的集成开发环境Visual Studio和调试工具,以提高代码质量和效率。
在.NET学习过程中,我也深入了解了.NET的广泛应用领域,例如:通过使用ASP.NET进行Web应用程序的开发;通过使用WPF和Windows Forms 构建Windows桌面应用程序;通过使用WCF实现分布式应用程序的开发。通过掌握这些技巧和实用工具,我能够充分利用.NET的各种功能和特性,并提高工作效率。我发现.NET的应用领域非常广泛,包括Windows桌面应用程序、Web应用程序、分布式应用程序等。因此,通过学习和掌握.NET的相关知识和技能,我能够应对不同类型的应用程序开发,应用程序的开发效率和质量也有所提高。
在编写.NET程序时,我也认识到了良好的代码风格和文件组织对于项目的成功实现至关重要。因此,在学习的过程中,我强调代码风格及文件的组织, 尽量保持代码整洁和高效。
通过应用.NET的不同应用程序类型,我发现它适用于Web应用程序、分布式应用程序、桌面应用程序等,这些应用程序类型覆盖了几乎所有业务行业的方方面面,因此,我认为掌握.NET至关重要,特别是对于希望进行Windows平台应用程序开发的个人和企业而言。
总之,学习.NET是一场充满挑战和收获的旅程。在学习期间,我掌握了面向对象的编程思路和.NET的技巧运用,并探索了.NET的广泛应用领域。更重要的是,我学会了如何将这些技能和工具合理地应用到实际项目中,以更好地满足应用程序的需求,并提高自己的技能水平。学习.NET不仅是一项技能培训,同时也是一次思维方式的转变和程序开发能力的提高。我学到了许多新的知识和技能,掌握了.NET的优势和特性,这些经验将在我的工作中起到非常重要的作用。