随笔分类 -  .NET

摘要:@[toc] 软件系统中数据库或者持久层的基本操作功能可以用Curd描述,Curd即 增加(Create)、更新(Update)、读取查询(Retrieve)和删除(Delete), 这4个单词的首字母。 在常见的业务系统中,对数据的大部分操作都是Curd,在实践的过程中对数据的筛选、排序、分页、关 阅读全文
posted @ 2023-07-07 19:04 林晓lx 阅读(778) 评论(6) 推荐(7) 编辑
摘要:Vue + Volo.Abp 实现OAuth2.0客户端授权模式认证@[toc] Volo.Abp的[身份服务器模块](https://docs.abp.io/zh-Hans/abp/latest/Modules/IdentityServer)默认使用 [IdentityServer4](https://identityserver4.readthedocs.io/ 阅读全文
posted @ 2023-07-07 11:32 林晓lx 阅读(1311) 评论(1) 推荐(4) 编辑
摘要:Volo.Abp升级小记(二)创建全新微服务模块@[toc] 假设有一个按照[官方sample](https://docs.abp.io/zh-Hans/abp/latest/Samples/Microservice-Demo)搭建的微服务项目,并安装好了abp-cli。 需要创建一个名为GDMK.CAH.Common的模块,并在模块中创建标签管 阅读全文
posted @ 2023-06-09 14:45 林晓lx 阅读(483) 评论(1) 推荐(0) 编辑
摘要:今天下午在排查一个EF问题时,遇到了个很隐蔽的坑,特此记录。 问题 使用ef执行Insert对象到某表时报错,此对象的Address为空: 不能将值 NULL 插入列 'Address',表 'dbo.xxx';列不允许有 Null 值。INSERT 失败。 检查数据库和迁移文件时发现Address 阅读全文
posted @ 2023-05-18 19:05 林晓lx 阅读(668) 评论(1) 推荐(9) 编辑
摘要:本文将从GB/T 22239《信息安全技术 网络安全等级保护基本要求》规定的安全计算环境中解读、摘要若干安全要求,结合Abp框架,对站点进行安全升级。 【身份鉴别】应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。 解决方案 设置密码最小长度 密码由数字、字 阅读全文
posted @ 2023-04-18 13:48 林晓lx 阅读(848) 评论(1) 推荐(9) 编辑
摘要:漏洞说明: 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Web脚本代码(html、javascript、css等),当用户浏览该页面时, 阅读全文
posted @ 2023-04-14 18:39 林晓lx 阅读(625) 评论(1) 推荐(2) 编辑
摘要:@ 用户找回密码,确切地说是重置密码,为了保证用户账号安全,原始密码将不再以明文的方式找回,而是通过短信或者邮件的方式发送一个随机的重置校验码(带校验码的页面连接),用户点击该链接,跳转到重置密码页面,输入新的密码。这个重置校验码是一次性的,用户重置密码后立即失效。 用户找回密码是在用户没有登录时进 阅读全文
posted @ 2023-04-14 11:59 林晓lx 阅读(537) 评论(0) 推荐(4) 编辑
摘要:用Abp实现两步验证(Two-Factor Authentication,2FA)登录(三):免登录验证@ 免登录验证是用户在首次两步验证通过后,在常用的设备(浏览器)中,在一定时间内不需要再次输入验证码直接登录。 常见的网页上提示“7天免登录验证”或“信任此设备,7天内无需两步验证”等内容。 这样可以提高用户的体验。但同时也会带来一定的安全风险,因此需要用户自己决定是否开启。 原理 常用的实现方式是 阅读全文
posted @ 2023-04-12 21:24 林晓lx 阅读(391) 评论(0) 推荐(3) 编辑
摘要:用Abp实现两步验证(Two-Factor Authentication,2FA)登录(一):认证模块@目录原理用户验证码校验模块双因素认证模块改写登录项目地址 在之前的博文 用Abp实现短信验证码免密登录(一):短信校验模块 一文中,我们实现了用户验证码校验模块,今天来拓展这个模块,使Abp用户系统支持双因素认证(Two-Factor Authentication)功能。 两步验证,又称双重验证或 阅读全文
posted @ 2023-04-07 22:02 林晓lx 阅读(921) 评论(0) 推荐(4) 编辑
摘要:假设有User表 public class User : Entity<int> { public int Id { get; set; } public string UserName { get; set; } public string Name { get; set; } public st 阅读全文
posted @ 2023-04-05 08:30 林晓lx 阅读(602) 评论(2) 推荐(3) 编辑
摘要:@ 现象 默认地,Abp的语言提供程序将返回的CultureInfo为En,在一些默认实现的接口(比如/api/TokenAuth/Authenticate)返回的错误信息是英文 目标是改成简体中文显示,但是即便我们在AbpSettings表中加入了DefaultLanguage为"zh-Hans" 阅读全文
posted @ 2023-04-04 20:56 林晓lx 阅读(442) 评论(0) 推荐(0) 编辑
摘要:[Volo.Abp升级笔记]使用旧版Api规则替换RESTful Api以兼容老程序@ Volo.Abp 配置应用层自动生成Controller,增删查改服务(CrudAppService)将会以RESTful Api的方式生成对应的接口 (官方文档),这与旧版本的Abp区别很大。RESTful固然好,虽然项目里新的Api会逐步使用RESTful Api代替旧的,但在前后端分离的项 阅读全文
posted @ 2023-03-29 11:22 林晓lx 阅读(306) 评论(0) 推荐(3) 编辑
摘要:本周在做接口动态传参的时候思考了个问题:如何把一个json字符串,转成C#动态类? 比如由 { 'userId': 100, 'id': 1, 'title': 'hello world', 'completed': false } 生成 dynamic obj = new { userId = 1 阅读全文
posted @ 2023-03-19 09:01 林晓lx 阅读(299) 评论(0) 推荐(1) 编辑
摘要:集成RocketChat至现有的.Net项目中,为ChatGPT铺路@ 前言 今天我们来聊一聊一个Paas的方案,如何集成到一个既有的项目中。 以其中一个需求为例子:在产品项目中,加入IM(即时通信)功能,开始徒手撸代码,会发现工作量很大,去github找开源项目,结果也可能事与愿违:功能不够强大,或者用不同的语言编写的,编译出来程序集无法集成到项目中。 可能当下最 阅读全文
posted @ 2023-03-01 16:52 林晓lx 阅读(995) 评论(2) 推荐(5) 编辑
摘要:[MAUI 项目实战] 音乐播放器(三):界面交互UI设计的本质是对于产品的理解在界面中多种形式的映射,当需求和定位不同时,对相同的功能表达出了不同的界面和交互方式。作为播放器,界面可以是千差万别的。《番茄播放器》的iOS平台上我开发了传统版本,和基于手势播放的版本。它们界面不同,但用的同一个播放内核。作为播放内核项目,在MatoMusic.Core的工作已经结束。本系列博文重点还是在播放器思路的解读,关于MAUI动画交互,我打算有时间另外写博客(这里给自己挖个坑)。 本项目中朴实无华的播放器界面部分,我想仅作为辅佐播放内核的示例,对于页面和控件的Xaml部分不会展开描述。 阅读全文
posted @ 2023-02-27 17:18 林晓lx 阅读(973) 评论(1) 推荐(10) 编辑
摘要:[MAUI 项目实战] 音乐播放器(二):播放内核曲目排序,原理是通过交换位置实现的,iOS和Android平台都有自己的可排序列表控件,在对选中的条目进行排序(往往是提起条目-拖拽-释放)的过程中,触发事件往往提供当前条目。在传统播放器随机播放时,如果下一曲不是我想听的,我仍然想听上一曲,由于上一曲按钮是随机触发的时机 阅读全文
posted @ 2023-02-12 00:27 林晓lx 阅读(599) 评论(0) 推荐(4) 编辑
摘要:[MAUI 项目实战] 音乐播放器(一):概述与架构为什么想起来这个项目了呢?这是一个Windows Phone 8的老项目,2014年用作为兴趣写了个叫“番茄播放器”的App,顺便提高编程技能。这个项目的架构历经多次迁移,从WP8到UWP再到Xamarin.Forms。去年底随着MAUI的正式发布,又尝试把它迁移到MAUI上来。 阅读全文
posted @ 2023-02-12 00:25 林晓lx 阅读(1660) 评论(2) 推荐(19) 编辑
摘要:适用于AbpBoilerplate的RocketChat Api库RocketChat 适用于AbpBoilerplate的RocketChat Api库 Rocket.Chat 是一个免费、开源、可扩展、高度可定制且安全的平台,可让您与团队进行交流和协作、共享文件和实时聊天(https://www.rocket.chat/) Rocket.Chat服务的安装请阅 阅读全文
posted @ 2023-02-12 00:11 林晓lx 阅读(93) 评论(0) 推荐(0) 编辑
摘要: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(三):Vue网页端开发前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读。 首先来编写发送验证码函数, 登录,绑定,解绑的业务都需要发送验证码功能,通过currentVerifyingType 来区别当前验证码种类。也就是在服务端的Purpose目的。 阅读全文
posted @ 2022-11-01 18:15 林晓lx 阅读(207) 评论(0) 推荐(0) 编辑
摘要:Abp.Zero 手机号免密登录验证与号码绑定功能的实现(二):改造Abp默认实现接下来我们重写原Abp的部分实现,来驳接手机号相关业务。 改造User类 重写PhoneNumber使得电话号码为必填项,和中国大陆手机号11位长度 public new const int MaxPhoneNumberLength = 11; [Required] [StringLength(Ma 阅读全文
posted @ 2022-11-01 18:13 林晓lx 阅读(174) 评论(0) 推荐(0) 编辑