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
相关产品推荐
相关产品推荐

