身份认证确认用户身份,授权控制资源访问。.NET通过ASP.NET Core Identity实现用户管理,支持多种认证方式和基于角色、策略的授权,结合中间件和特性配置,可快速构建安全应用。

.NET中的身份认证(Authentication)和授权(Authorization)是构建安全应用的两个核心机制。身份认证确认用户是谁,授权决定已认证的用户能访问哪些资源或执行哪些操作。在实际开发中,这两个过程通常配合使用,确保只有合法用户在权限范围内进行操作。
身份认证与授权的基本概念
身份认证(Authentication) 是验证用户身份的过程。比如用户输入用户名和密码,系统检查是否匹配,若匹配则认为该用户身份合法。.NET支持多种认证方式,如Cookie认证、JWT Bearer认证、第三方登录(Google、Facebook等)。
授权(Authorization) 发生在认证之后,用于控制用户可以访问的资源。例如,管理员可以删除数据,普通用户只能查看。.NET通过角色(Role)、策略(Policy)等方式实现精细的权限控制。
使用ASP.NET Core Identity框架
Identity 是 ASP.NET Core 提供的一套完整的用户管理框架,内置了用户注册、登录、密码管理、角色管理等功能,适合大多数Web应用的需求。
1. 添加Identity到项目
创建一个新的 ASP.NET Core Web 应用,在创建时选择“Individual Account”(单独用户账户),Visual Studio 会自动配置 Identity。或者手动添加:
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCoredotnet add package Microsoft.EntityFrameworkCore.SqlServer
然后在 Program.cs 中注册服务:
var builder = WebApplication.CreateBuilder(args);builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));builder.Services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders();var app = builder.Build();// 启用认证和授权中间件app.UseAuthentication();app.UseAuthorization();
2. 配置数据库上下文
创建一个继承自 IdentityDbContext 的类:
public class ApplicationDbContext : IdentityDbContext{ public ApplicationDbContext(DbContextOptions options) : base(options) { }}
使用 EF Core 迁移生成数据库表:
dotnet ef migrations add CreateIdentitySchemadotnet ef database update
3. 使用内置页面或API进行登录/注册
Identity 支持 Razor Pages UI。可通过脚手架添加登录、注册页面:
右键项目 → “添加” → “新搭建基架项”选择“Identity”,添加 Login、Register 等页面
也可以通过控制器实现 API 登录:
[ApiController][Route("[controller]")]public class AccountController : ControllerBase{ private readonly SignInManager _signInManager; public AccountController(SignInManager signInManager) { _signInManager = signInManager; } [HttpPost("login")] public async Task Login(LoginModel model) { var result = await _signInManager.PasswordSignInAsync( model.Username, model.Password, false, false); if (result.Succeeded) { return Ok("登录成功"); } return Unauthorized(); }}
实现授权控制
在控制器或 Razor 页面上使用特性来限制访问:
[Authorize] // 要求用户已登录public class SecureController : Controller{ [Authorize(Roles = "Admin")] public IActionResult DeleteUser() { return View(); } [Authorize(Policy = "MustBeOver18")] public IActionResult AdultContent() { return View(); }}
自定义授权策略
在 Program.cs 中定义策略:
builder.Services.AddAuthorization(options =>{ options.AddPolicy("MustBeOver18", policy => policy.RequireClaim("age", "18", "21", "25"));});
或基于更复杂的逻辑使用 IAuthorizationHandler。
基本上就这些。Identity 框架简化了用户管理,结合认证与授权机制,能快速构建安全的 .NET 应用。不复杂但容易忽略细节,比如中间件顺序和策略配置。
以上就是.NET中的身份认证(Authentication)与授权(Authorization)是什么?如何使用Identity框架?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441743.html
微信扫一扫
支付宝扫一扫