You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor客户端对接SQL Server用户表登录,表单查找及验证配置问题

Blazor 登录表单定位及自定义身份验证配置指南

1. 登录表单的存放位置

Blazor 项目如果创建时选择了内置个体身份验证(Individual Accounts),登录相关页面默认封装在 Identity Razor 类库中,不会直接出现在项目的 Pages 文件夹下,需要通过脚手架生成才可以修改:

  • 右键项目 → 选择「添加 → 新搭建基架的项目」
  • 左侧菜单选中「Identity」,点击下一步
  • 勾选需要生成的 Account\Login 页面,选择项目已有的 DbContext 类,点击添加
  • 生成完成后,登录表单相关代码会存放在项目根目录的 Areas/Identity/Pages/Account 路径下,对应文件为 Login.cshtml(前端表单)和 Login.cshtml.cs(后台验证逻辑)

2. 对接 SQL Server 数据库用户表的身份验证配置步骤

2.1 修改登录表单字段

打开 Login.cshtml,将原有邮箱输入的相关代码替换为用户名字段:

  • 把输入框的标签文字从「邮箱」修改为「用户名」
  • 把InputEmail类型的控件替换为普通InputText控件,绑定的字段从Input.Email改为Input.Username

2.2 修改登录后台模型和逻辑

打开 Login.cshtml.cs 文件:

  • 找到Input内部类,删除原有Email属性,新增Username属性,添加必填验证特性
  • 如果你使用自定义 SQL Server User 表而非默认 Identity 用户表:
    • 在构造函数中注入你自己的 DbContext 实例
    • 找到OnPostAsync登录处理方法,替换原有默认的身份验证逻辑,改为直接查询你的 User 表做校验,示例代码:
      // 从数据库查询对应用户
      var existUser = await _yourDbContext.Users.FirstOrDefaultAsync(u => u.UserName == Input.Username);
      if (existUser == null || !BCrypt.Net.BCrypt.Verify(Input.Password, existUser.PasswordHash))
      {
          ModelState.AddModelError(string.Empty, "用户名或密码错误");
          return Page();
      }
      // 校验通过后签发登录凭证
      await _signInManager.SignInAsync(new IdentityUser(existUser.UserName), isPersistent: Input.RememberMe);
      
  • 如果你基于默认 Identity 体系修改,只需要将原有按邮箱查询用户的逻辑改为按用户名查询,再调用默认的密码校验方法即可

2.3 功能验证

启动项目,输入 SQL Server User 表中存在的用户名和对应密码,验证登录流程是否正常。

内容的提问来源于stack exchange,提问作者user10422085

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:45:01