Blazor入门100天 : 身份验证和授权 (5) - 本地化资源

目录

  1. 建立默认带身份验证 Blazor 程序
  2. 角色/组件/特性/过程逻辑
  3. DB 改 Sqlite
  4. 将自定义字段添加到用户表
  5. 脚手架拉取IDS文件,本地化资源
  6. freesql 生成实体类,freesql 管理ids数据表
  7. 初始化 Roles,freesql 外键 => 导航属性
  8. 完善 freesql 和 bb 特性

本节源码

https://gitee.com/densen2014/Blazor100/tree/Blazor-教程15-5/b16blazorIDS2

拉取IDS源码到本地

自定义字段

  1. 自定义字段参考 https://www.cnblogs.com/densen2014/p/17083937.html
  2. 如果没有做上一个步骤,要重新来一遍: 把项目其他的 Identity 也替换为新的 WebAppIdentityUser 类
  3. 如果接着教程弄的,就已经生成完整的代码了.

本地化资源

安利一个小工具https://git删hub.com/Kerwin1202/VsTranslator

开启自动翻译后, 鼠标停留就自动翻译, 点击翻译语句直接替换原字符串,太解放生产力了!

选几个常用的处理一下

1. 本地化登录页面

文件 AreasIdentityPagesAccountLogin.cshtml

@page
@model LoginModel

@{
    ViewData["Title"] = "登录";
}

@ViewData["Title"]

使用其他服务登录.


@{ if ((Model.ExternalLogins?.Count ?? 0) == 0) {

没有配置外部身份验证服务。查看链接 文章 关于设置此 ASP.NET 应用程序以支持通过外部服务登录.

} else { } }
@section Scripts { }

后置代码Login.cshtml.cs里面的InputModel也处理一下

    public class InputModel
    {
        /// 
        /// 此 API 支持 ASP.NET Core Identity 默认 UI 基础结构,不打算使用
        /// 直接来自您的代码。此 API 可能会在未来的版本中更改或删除。
        /// 
        [Required]
        [EmailAddress]
        public string Email { get; set; }

        /// 
        /// 此 API 支持 ASP.NET Core Identity 默认 UI 基础结构,不打算使用
        /// 直接来自您的代码。此 API 可能会在未来的版本中更改或删除。
        /// 
        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }

        /// 
        /// 此 API 支持 ASP.NET Core Identity 默认 UI 基础结构,不打算使用
        /// 直接来自您的代码。此 API 可能会在未来的版本中更改或删除。
        /// 
        [Display(Name = "记住账号?")]
        public bool RememberMe { get; set; }
    }

运行截图

2. 本地化注册页面

文件 AreasIdentityPagesAccountRegister.cshtml

注册密码默认长度有两个地方设置

1.Program.cs 设置

builder.Services.AddDefaultIdentity(o =>
 {   // Password settings.
     o.Password.RequiredLength = 1;
 }
)
  1. Register.cshtml.csInputModel

修改 StringLength 特性, 顺便添加 Display 特性

        [Required]
        [StringLength(100, MinimumLength=1, ErrorMessage = "{0} 的长度必须至少为 {2},最多为 {1} 个字符.")]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }

运行截图

3. 本地化资料页面, 添加全名

文件 AreasIdentityPagesAccountManageIndex.cshtml

添加代码


  
  
  

后置代码文件 Index.cshtml.cs

public string PhoneNumber { get; set; } 后加入代码

    public class InputModel
    {
        ...
        [Display(Name = "名称")]
        public string Name { get; set; }
    }

LoadAsync() 里加入 Name 字段相关代码

    private async Task LoadAsync(WebAppIdentityUser user)
    {
        var userName = await _userManager.GetUserNameAsync(user);
        var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
        var name = user.Name;

        Username = userName;

        Input = new InputModel
        {
            PhoneNumber = phoneNumber,
            Name = name
        };
    }

OnPostAsync() 里加入 Name 字段相关代码

    public async Task OnPostAsync()
    {
        var user = await _userManager.GetUserAsync(User);
        if (user == null)
        {
            return NotFound(#34;无法加载具有 ID 的用户 '{_userManager.GetUserId(User)}'.");
        }

        if (!ModelState.IsValid)
        {
            await LoadAsync(user);
            return Page();
        }

        var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
        if (Input.PhoneNumber != phoneNumber)
        {
            var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber);
            if (!setPhoneResult.Succeeded)
            {
                StatusMessage = "尝试设置电话号码时出现意外错误.";
                return RedirectToPage();
            }
        }

        var name = user.Name;
        if (Input.Name != name)
        {
            user.Name = Input.Name;
            await _userManager.UpdateAsync(user);
        }

        await _signInManager.RefreshSignInAsync(user);
        StatusMessage = "你的个人资料已经更新";
        return RedirectToPage();
    }

运行截图

本节源码

https://gitee.com/densen2014/Blazor100/tree/Blazor-教程15-5/b16blazorIDS2

源代码

https://gitee.com/densen2014/Blazor100 (镜像/非最新版)

关联项目

FreeSql

BA & Blazor

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名AlexChow(包含链接: https://github.com/densen2014 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系 。

转载声明

本文来自博客园,作者:周创琳 AlexChow,转载请注明原文链接:https://www.cnblogs.com/densen2014/p/17083938.html

AlexChow

今日头条 | 博客园 | 知乎 | Gitee | GitHub

分类: Blazor, BootstrapBlazor

展开阅读全文

页面更新:2024-04-23

标签:可能会   字段   截图   源码   入门   特性   密码   版本   结构   代码   文件   资源

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top