ASP.NET Core 9.0 Identity极简应用

ASP.NET Core 9.0 Identity 是微软提供的用户身份管理框架,在blazor编程中应用非常简洁高效。最近在为凤凰科技https://www.ic-phoenix.com改造一个内部老旧asp项目中身份验证部分需要更新到core 9.0系统下,所以只要基本验证功能就可以了,太冗杂的内容对项目都是多余。况且众所周知,微软的东西一项全面而复杂。官方文档往往需要强大的实践背景才能读懂。那在简单功能系统中,往往只需要关注快速高效的部署的部分就可以了。应用中只搭取最主要的功能就可以达到自己的目的。那如何做到快速部署,代码简洁高效呢。看了很多文档才搞定。分享出来希望有相同需求的朋友可以少走一点弯路。

Identity主要实现的核心功能模块有很多如下:

用户体系管理
内置用户模型支持字段扩展
密码哈希存储与验证
双因素认证集成
外部登录提供程序(OAuth/OpenID Connect)
角色权限系统
基于角色的访问控制(RBAC)
声明式权限管理
策略驱动的授权体系

系统用到了部分功能,在program.cs里添加服务,为了方便管理我们启用登陆管理者signinmanager,代码如下:

builder.Services.AddIdentityCore<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddSignInManager()
    .AddDefaultTokenProviders();

接下来配置option:


builder.Services.Configure<IdentityOptions>(options =>
{
    options.Password.RequireDigit = true;
    options.Password.RequireLowercase = true;
    options.Password.RequireUppercase = false;  //必须包含大写字符
    options.Password.RequireNonAlphanumeric = false;//指示密码是否必须包含非字母数字字符

    options.User.AllowedUserNameCharacters =
    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
});

blazor引用的时候需要声明一下

@using Microsoft.AspNetCore.Authorization
@using Microsoft.EntityFrameworkCore
@using Microsoft.AspNetCore.Identity    

接着注入anthenticationstateprovider:

@inject AuthenticationStateProvider AuthenticationStateProvider

在需要验证的位置OnInitializedAsync里调用

        var authState = await AuthenticationStateProvider
                        .GetAuthenticationStateAsync();

      var user = authState.User;

        if (user.Identity is not null && user.Identity.IsAuthenticated)
        {
          //这里获取user授权策略
        }

需要注意的是,user账号需要认证和授权,以后有机会我再来介绍一下如何简单的做授权。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值