ASP.NET Core 个人博客项目搭建笔记

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 简易个人博客项目搭建笔记 1.概述 项目梗概通过做一个比较简单,通俗易懂的个人博客项目,很简单的增删改查,来更好学习asp.net core,这个项目使用asp.net core webapi+elementui来做。 2.数据库设计文章表ID文章标题文章内容创建时间文章类型ID浏览量点赞量作者ID文章类型表ID类型名作者表ID姓名账号密码 MD5 3.架构设计仓储层服务层 MD5加密pu...

简易个人博客项目搭建笔记

1.概述

项目梗概

通过做一个比较简单,通俗易懂的个人博客项目,很简单的增删改查,来更好学习asp.net core,这个项目使用asp.net core webapi+elementui来做。

2.数据库设计

文章表

ID
文章标题
文章内容
创建时间
文章类型ID
浏览量
点赞量
作者ID

文章类型表

ID
类型名

作者表

ID
姓名
账号
密码 MD5

3.架构设计

仓储层

服务层

MD5加密

public static string MD5Encrypt32(string password)
{
   
    string pwd = "";
    MD5 md5 = MD5.Create(); //实例化一个md5对像
    byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(password));
    for (int i = 0; i < s.Length; i++)
    {
   
        pwd = pwd + s[i].ToString("X");
    }
    return pwd;
}

JWT使用

JWT授权

1.添加一个webapi项目

2.安装Nuget程序包 System.IdentityModel.Tokens.Jwt

var claims = new Claim[]
            {
   
                new Claim(ClaimTypes.Name, "张三")
            };
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SDMC-CJAS1-SAD-DFSFA-SADHJVF-VF"));
//issuer代表颁发Token的Web应用程序,audience是Token的受理者
var token = new JwtSecurityToken(
    issuer: "http://localhost:6060",
    audience: "http://localhost:5000",
    claims: claims,
    notBefore: DateTime.Now,
    expires: DateTime.Now.AddHours(1),
    signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
);
var jwtToken = new JwtSecurityTokenHandler().WriteToken(token);
return jwtToken;

JWT鉴权

安装Microsoft.AspNetCore.Authentication.JwtBearer

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
   
              options.TokenValidationParameters = new TokenValidationParameters
              {
   
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SDMC-CJAS1-SAD-DFSFA-SADHJVF-VF")),
                ValidateIssuer = true,
                ValidIssuer = "http://localhost:6060",
                ValidateAudience = true,
                ValidAudience = "http://localhost:5000",
                ValidateLifetime = true,
                ClockSkew = TimeSpan.FromMinutes(60)
              };
            });

JWT授权鉴权使用

Swagger想要使用鉴权需要注册服务的时候添加以下代码

c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
        {
   
          In=ParameterLocation.Header,
          Type=SecuritySchemeType.ApiKey,
          Description= "直接在下框中输入Bearer {token}(注意两者之间是一个空格)",
          Name="Authorization",
          BearerFormat="JWT",
          Scheme="Bearer"
        });
        c.AddSecurityRequirement(new OpenApiSecurityRequirement
        {
   
          {
   
            new OpenApiSecurityScheme
            {
   
              Reference=new OpenApiReference
              {
   
                Type=ReferenceType.SecurityScheme,
                Id="Bearer"
              }
            },
            new string[] {
   }
          }
        });

AutoMapper

安装Nuget AutoMapper.Extensions.Microsoft.DependencyInjection

定义一个类,继承Profile

public class CustomAutoMapperProfile:Profile
  {
   
    public CustomAutoMapperProfile()
    {
   
      base.CreateMap<StudentEntity, StudentDto>();
    }
  }

在服务中注册

services.AddAutoMapper(typeof(CustomAutoMapperProfile));

构造函数注入

private readonly IMapper _mapper;

    public StudentsController(IMapper mapper)
    {
   
      this._mapper = mapper;
    }

复杂映射

base.CreateMap<Admin, AdminDto>()
        .ForMember(dest => dest.RoleMsg, sourse => sourse.MapFrom(src => src.RoleInfo.RoleMsg));
User:
UserPwd    ->不能返回到前端
UserName ->返回到前端
UserDTO:
UserName
目录
相关文章
|
10月前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
227 5
|
10月前
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
129 7
|
11月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
204 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
10月前
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
184 1
|
10月前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
224 3
|
10月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
232 5
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
380 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
199 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
217 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
164 0