通过前面的ASP.NET Core Blazor编程系列文章为读者介绍了Blazor及组件的相关基础概念,以及我们已经实现了用Blazor实现对数据的增删改查这四大基本功能,以及文件上传的功能,通过这些功能的实现我们已经能用Blazor处理一些简单的实际问题,特别是企业内部信息管理系统的相关问题。

前面的ASP.NET Core Blazor编程系列文章中却没有讲到信息管理系统中一个最基本功能——登录,有关登录功能的介绍

通过搜索引擎你可以搜索到很多关于如何基于Blazor开发登录页面的文章,不过大部分的Blazor登录示例是往往给出的是Identity Server的例子,包括微软自己的文档网站上的示例。

一、登录界面

要实现web系统的登录功能,首先要考虑登录的认证方式,Web系统常见的登录机制有Cookie、Session或Token。对于Web 1.0时代的应用来说,最好用的就是Session;而对Web 2.0时代之后,随着一些前端技术比如Vue、Angular、React、Blazor的兴起,前后端分离技术的应用,单页应用开始出现在各种项目中,后端采用Restful架构设计Web API接口,这些接口都是无状态的,因此一般只选择Cookie或Token,由前端持有自己的身份票据,后端做验证而不存储。

微软官方最推荐的方式是使用OAuth和OIDC。如果开发企业内部信息管理系统的后台,还要另搞一个OAuth服务器,对绝大多数的企业内部IT开发者来说维护和部署成本过高。接下来我要介绍的登录功能,不使用OAuth服务器,而是使用传统的用户名与密码模式+后端生成JWT。对企业内部后台应用来说,这么做已经足够安全。

接下来介绍的登录功能是基于JWT的企业内部应用登录(用户名/密码)认证,本文中的代码只是示例代码,并不保证代码在安全性,逻辑层的可靠性。

1. 在Visual Studio 2022的解决方案资源管理器中,鼠标左键选中“Models”文件夹,右键单击,在弹出菜单中选择“添加—>类”,并将类命名为“UserInfo”, 这个新增实体类作为登录表单用的Model。如下图。并添加如下代码:

using System.ComponentModel.DataAnnotations;

namespace BlazorAppDemo.Models
{ public class UserInfo
{ [Key]
[Display(Name = "用户名")]
[Required]
[StringLength(30,MinimumLength =3)]
public string UserName { get; set; } [Display(Name = "密码")]
[Required]
[DataType(DataType.Password)]
[StringLength(30,MinimumLength =4)]
public string Password { get; set; } public DateTime LastLoginTime { get; set; } public DateTime ChangedPasswordTime { get; set; } }
}

二、将 “UserInfo” 类生成数据库表

1.在Visual Studio 2022的解决方案资源管理器中找到BookContext (Models/BookContext.cs) 文件,使用鼠标左键双击在文本编辑器中打开,添加UserInfo表的相关代码。代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore; namespace BlazorAppDemo.Models
{
public class BookContext:DbContext
{
public BookContext(DbContextOptions<BookContext> options)
: base(options)
{ } public DbSet<Book> Book { get; set; } public DbSet<FileDescribe> FileDescribe { get; set; } public DbSet<UserInfo> UserInfo { get; set; } }
}

2.在Visual Studio 2022中打开程序包管理器控制台 (PMC),“菜单栏>工具> NuGet 包管理器 > 程序包管理器控制台”。

3.在 PMC 中分别执行以下两条命令。这两条命令将实现向数据库中添加 UserInfo表,执行结果发下图。

Add-Migration AddUserInfoTable

Update-Database

4.在执行以上指令之后,会在数据库中添加UserInfo表,结果如下图。

 

学习ASP.NET Core Blazor编程系列二十二——登录(1)的更多相关文章

  1. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上)

    学习ASP.NET Core Blazor编程系列一--综述 一.概述 Blazor 是一个生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 U ...

  2. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 四.创建一个Blazor应用程序 1. 第一种创 ...

  3. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(下)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  4. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(完)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  5. 022年9月12日 学习ASP.NET Core Blazor编程系列三——实体

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  6. 学习ASP.NET Core Blazor编程系列四——迁移

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  7. 学习ASP.NET Core Blazor编程系列五——列表页面

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  8. 学习ASP.NET Core Blazor编程系列六——初始化数据

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  9. 学习ASP.NET Core Blazor编程系列六——新增图书(上)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  10. 学习ASP.NET Core Blazor编程系列八——数据校验

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

随机推荐

  1. 制作一个windows垃圾清理小程序

    制作一个windows垃圾清理小程序: 把下列代码保存为.bat文件(如垃圾清理.bat) 双击它就能很快地清理垃圾文件,大约一分钟不到. 就是下面的文字(这行不用复制)=============== ...

  2. glusterfs安装配置

    目标: 原有的k8s的集群磁盘容量不够,数据迁移无法完成,数据迁移是物理机无法由于采购磁盘流程过程,申请虚拟机搭建glusterfs做分布式存储 磁盘规划: # 查看盘符 $ lsblk # 然后创建 ...

  3. 精简docker的导出镜像

    Docker 镜像是由多个文件系统(只读层)叠加而成,每个层仅包含了前一层的差异部分.当我们启动一个容器的时候,Docker 会加载镜像层并在其上添加一个可写层.容器上所做的任何更改,譬如新建文件.更 ...

  4. Python基础部分:2、 对计算机的认识和python解释器

    目录 一.计算机五大组成部分 1.控制器 2.运算器 3.储存器 4.输入设备 5.输出设备 二.计算机三大核心硬件 1.cpu 2.内存 3.硬盘 三.操作系统 四.编程与编程语言 1.编程语言 2 ...

  5. Windows版CheatSheet——一键显示当前程序快捷键列表

    Windows系统上的各种软件有太多的快捷键,想要记住是几乎不可能的,推荐一个一键显示当前软件快捷键的软件,在使用其他程序的时候,只要按下Ctrl+`就可以理解弹出该软件的所有快捷键列表,还支持收藏功 ...

  6. python学习——查找计算机中的文件

    # import os # # path = 'C:/Users/admin/Desktop/images' # files = os.listdir(path) # # for f in files ...

  7. 解决Emma中文乱码

    vim -/.emma/emmarc 找到 db_encoding=latin1 改为 db_encoding=utf8 然后重新运行emma,此时发现还是乱码,不要着急,在执行所有的sql语句之前加 ...

  8. css初始化收集

    页面元素样式初始化 * { margin: 0; padding: 0; box-sizing: border-box; } html { font-size: 100px; } /* 去掉a链接的文 ...

  9. mysql-front连接mysql报错1251解决方法

    客户端不通过服务器的验证,建议升级mysql客户端 出现错误的原因是mysql版本问题,由于mysql8.0版本与mysql5.0版本加密方式不同,导致mysql-front无法通过验证. mysql ...

  10. 模拟Promise的功能

    模拟Promise的功能,  按照下面的步骤,一步一步 1. 新建是个构造函数 2. 传入一个可执行函数 函数的入参第一个为 fullFill函数 第二个为 reject函数: 函数立即执行, 参数函 ...