建网站要大约多少钱智能建站代理

news/2025/9/24 7:52:54/文章来源:
建网站要大约多少钱,智能建站代理,口碑好网络营销电话,佛山营销手机网站建设前言上一篇已经介绍了identity在web api中的基本配置#xff0c;本篇来完成用户的注册#xff0c;登录#xff0c;获取jwt token。开始开始之前先配置一下jwt相关服务。配置JWT 首先NuGet安装包#xff1a;PackageReference IncludeMicrosoft.AspNetCore.Authent… 前言上一篇已经介绍了identity在web api中的基本配置本篇来完成用户的注册登录获取jwt token。开始开始之前先配置一下jwt相关服务。配置JWT 首先NuGet安装包PackageReference IncludeMicrosoft.AspNetCore.Authentication.JwtBearer Version5.0.10 /appsettings.json中添加jwt配置JwtSettings: {SecurityKey: qP1yR9qH2xS0vW2lA3gI4nF0zA7fA3hB,ExpiresIn: 00:10:00 }为了方便新建一个配置类JwtSettingspublic class JwtSettings {public string SecurityKey { get; set; }public TimeSpan ExpiresIn { get; set; } }在Startup中配置jwtpublic void ConfigureServices(IServiceCollection services) {//省略......var jwtSettings  Configuration.GetSection(nameof(JwtSettings)).GetJwtSettings();services.AddSingleton(jwtSettings);var tokenValidationParameters  new TokenValidationParameters{ValidateIssuer  false,ValidateAudience  false,ValidateIssuerSigningKey  true,IssuerSigningKey  new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtSettings.SecurityKey)),ClockSkew  TimeSpan.Zero,};services.AddAuthentication(options {options.DefaultAuthenticateScheme  JwtBearerDefaults.AuthenticationScheme;options.DefaultScheme  JwtBearerDefaults.AuthenticationScheme;options.DefaultChallengeScheme  JwtBearerDefaults.AuthenticationScheme;}).AddJwtBearer(options  { options.TokenValidationParameters  tokenValidationParameters; }); }最后别忘了UseAuthenticationapp.UseAuthentication(); // add app.UseAuthorization();结构搭建 下面把项目基本结构搭建好做好接口后面实现以下是各个类的定义// 用户注册请求参数 public class RegisterRequest {public string UserName { get; set; }public string Password { get; set; }public string Address { get; set; } }// 用户登录请求参数 public class LoginRequest {public string UserName { get; set; }public string Password { get; set; } }// 注册 登录 成功后返回 token public class TokenResponse {[JsonPropertyName(access_token)] public string AccessToken { get; set; }[JsonPropertyName(token_type)] public string TokenType { get; set; } }// 登录 注册 失败时返回错误信息 public class FailedResponse {public IEnumerablestring Errors { get; set; } }// IUserService 接口 public interface IUserService {TaskTokenResult RegisterAsync(string username, string password, string address);TaskTokenResult LoginAsync(string username, string password); }// UserService 实现 public class UserService : IUserService {public TaskTokenResult RegisterAsync(string username, string password, string address){throw new System.NotImplementedException();}public TaskTokenResult LoginAsync(string username, string password){throw new System.NotImplementedException();} }// TokenResult 定义 public class TokenResult {public bool Success  Errors  null || !Errors.Any();public IEnumerablestring Errors { get; set; }public string AccessToken { get; set; }public string TokenType { get; set; } }最后是UserController[Route(api/[controller])] [ApiController] public class UserController : ControllerBase {private readonly IUserService _userService;public UserController(IUserService userService){_userService  userService;}[HttpPost(Register)]public async TaskIActionResult Register(RegisterRequest request){var result  await _userService.RegisterAsync(request.UserName, request.Password, request.Address);if (!result.Success){return BadRequest(new FailedResponse(){Errors  result.Errors});}return Ok(new TokenResponse{AccessToken  result.AccessToken,TokenType  result.TokenType});}[HttpPost(Login)]public async TaskIActionResult Login(LoginRequest request){var result  await _userService.LoginAsync(request.UserName, request.Password);if (!result.Success){return Unauthorized(new FailedResponse(){Errors  result.Errors});}return Ok(new TokenResponse{AccessToken  result.AccessToken,TokenType  result.TokenType});} }service实现 上面已经做好了基本的结构接下来就是实现UserService中的RegisterAsync和LoginAsync方法了。这里主要用到identity中的UserManagerUserManager封装了很多用户操作的现成方法。在UserService中先做一个私有方法根据user创建jwt token用户注册登录成功后调用此方法得到token返回即可private TokenResult GenerateJwtToken(AppUser user) {var key  Encoding.ASCII.GetBytes(_jwtSettings.SecurityKey);var tokenDescriptor  new SecurityTokenDescriptor{Subject  new ClaimsIdentity(new[]{new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString(N)),new Claim(JwtRegisteredClaimNames.Sub, user.Id.ToString())}),IssuedAt  DateTime.UtcNow,NotBefore  DateTime.UtcNow,Expires  DateTime.UtcNow.Add(_jwtSettings.ExpiresIn),SigningCredentials  new SigningCredentials(new SymmetricSecurityKey(key),SecurityAlgorithms.HmacSha256Signature)};var jwtTokenHandler  new JwtSecurityTokenHandler();var securityToken  jwtTokenHandler.CreateToken(tokenDescriptor);var token  jwtTokenHandler.WriteToken(securityToken);return new TokenResult(){AccessToken  token,TokenType  Bearer}; }注册方法实现public async TaskTokenResult RegisterAsync(string username, string password, string address) {var existingUser  await _userManager.FindByNameAsync(username);if (existingUser ! null){return new TokenResult(){Errors  new[] {user already exists!}, //用户已存在};}var newUser  new AppUser() {UserName  username, Address  address};var isCreated  await _userManager.CreateAsync(newUser, password);if (!isCreated.Succeeded){return new TokenResult(){Errors  isCreated.Errors.Select(p  p.Description)};}return GenerateJwtToken(newUser); }登录方法实现public async TaskTokenResult LoginAsync(string username, string password) {var existingUser  await _userManager.FindByNameAsync(username);if (existingUser  null){return new TokenResult(){Errors  new[] {user does not exist!}, //用户不存在};}var isCorrect  await _userManager.CheckPasswordAsync(existingUser, password);if (!isCorrect){return new TokenResult(){Errors  new[] {wrong user name or password!}, //用户名或密码错误};}return GenerateJwtToken(existingUser); }最后别忘了注册UserServiceservices.AddScopedIUserService, UserService();swagger配置 为了方便测试可以配置一下swaggerNuGet安装包PackageReference IncludeSwashbuckle.AspNetCore Version5.6.3 /ConfigureServicesservices.AddSwaggerGen(c  {c.SwaggerDoc(v1, new OpenApiInfo{Title  Sample.Api,Version  v1,Description  Sample.Api Swagger Doc});c.AddSecurityDefinition(Bearer, new OpenApiSecurityScheme{Description  Input the JWT like: Bearer {your token},Name  Authorization,In  ParameterLocation.Header,Type  SecuritySchemeType.ApiKey,BearerFormat  JWT,Scheme  Bearer});c.AddSecurityRequirement(new OpenApiSecurityRequirement{{new OpenApiSecurityScheme{Reference  new OpenApiReference{Type  ReferenceType.SecurityScheme,Id  Bearer}},Array.Emptystring()}}); });app.UseSwagger(); app.UseSwaggerUI(c  c.SwaggerEndpoint(/swagger/v1/swagger.json, Sample.Api v1));测试一下 随便输入abc进行注册返回了一些密码规则的错误这个规则在注册identity服务时可以配置services.AddIdentityCoreAppUser(options  {options.Password.RequireDigit  true;options.Password.RequireLowercase  false;options.Password.RequireUppercase  false;options.Password.RequireNonAlphanumeric  false; }).AddEntityFrameworkStoresAppDbContext();identityOptions还支持一些其他配置。下面注册成功后返回了token使用刚刚注册的账号测试登录也没有问题最后本篇完成了identity的登录注册获取token下一篇将介绍如何使用refresh token。参考ASP.NET Core 简介 Identity | Microsoft Docs[1]Mohamad Lawand - DEV Community[2]参考资料[1]ASP.NET Core 简介 Identity | Microsoft Docs: https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/identity?viewaspnetcore-5.0tabsvisual-studio[2]Mohamad Lawand - DEV Community: https://dev.to/moe23/comments

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

衡阳网站备案ps软件免费下载安装

昨天,鬼古女夫妇来京签名售书,中午我们三人在内蒙古宾馆吃的蒙古手把肉,喝了一瓶北京二锅头。晚上,《长篇小说选刊》编辑刘玉浦请我们及773恐怖小说的策划人花青女士在后海酒吧喝酒。中间白衣者为鬼古女夫妇。鬼古女恐怖小说新作《…

HJ9 提取不重复的整数

描述 对于给定的正整数 n ,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。具体地,如果遇到相同数字,保留在最右侧出现的第一个数字。 输入描述: 在一行上输入一个整数 n(1≦n≦10^8) 代表给定的整数。…

2025年国家科技奖初评公布(科技进步奖)

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 …

在与客户谈网页广告时如何让客户相信网站流量网站大学报名官网入口

文章目录 阿里云PAI pytorch大语言模型开发环境简介PAI-DSW 快速入门1. 安装和配置2. 模型训练2.1 数据集准备2.2 模型训练脚本准备2.3 提交训练作业 3. 部署模型为推理服务4. 调用推理服务 阿里云PAI pytorch大语言模型开发环境简介 PAI-DSW 快速入门 阿里云机器学习PAI&a…

鸿鹄网站建设网页加速器免费

使用asp.net core Identity IdentityServer灵活的设计中有一部分是可以将你的用户和他们的数据保存到数据库中的。如果你以一个新的用户数据库开始,那么,asp.net core Identity是一个选择。这个示例演示了如何在IdentityServer中使用asp.net core Ientit…

淘客免费交易网站建设shop商城系统

棒球元宇宙内容发展规划 1. 棒球元宇宙内容需求 分析现有棒球元宇宙内容缺口和痛点 在棒球运动中,元宇宙有着广阔的发展前景,但也存在着一些问题和挑战。其中最主要的问题之一是缺乏高质量、丰富多样的棒球元宇宙内容。现有的棒球元宇宙平台大多只提供…

html 网站建设中wordpress 送钱啦

想必大家在日常的工作中,会经常需要分享代码、演示项目或者进行在线教学,这就需要一个既高效又便捷的屏幕共享工具。然而,现有的一些解决方案往往存在延迟高、画质差等问题。 今天就分享一个开源的屏幕共享项目 - screego,不但免…

票务网站做酒店推荐的目的高端大气网站欣赏

共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。判断公阴极和公阳极找公共共阴和公共共…

做网页游戏网站南充企业网站建设

其中有一个常用的编程思想: 由于是遍历查找,不能用if-else来输出没有找到,而应该设置一个索引index,如果找到就将index的值设置成下标的值,如果遍历结束后index仍为初始值,才是没有找到 //2024.07.03impor…

如何撰写网站建设方案书wordpress 图片接口怎么用

python 的集合类型和 其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), difference(差)和sysmmetricdifference(对称差集)等数学运算,和我们…

PRISMS Junior Varsity Training 20250919

Problem 1 Find all the roots of equation \(2x-2.8=\lfloor x\rfloor\). Solution 1 \[\begin{align} 2x-2.8=\lfloor x\rfloor&\Longrightarrow x-1<2x-2.8\le x\\ &\Longleftrightarrow1.8<x\le2.8\…

网站共享备案thinkphp做网站

Android 6.0 / Android M 发布后&#xff0c;手机权限被分为两种&#xff0c;即&#xff1a;Normal Permission / 正常权限 和Dangerous Permission / 危险权限&#xff0c;更好的保护了用户的隐私&#xff0c;极大提升了系统安全性&#xff01;因此&#xff0c;我们在APP开发过…

南阳网站制作哪家好网站图标在哪里做修改

引用 之前遇到一次函数调用结果的问题&#xff0c;今天在这里做一下记录。 一个基类&#xff0c;一个派生类&#xff0c;两个类中都有一个函数名相同&#xff0c;参数相同&#xff0c;参数不同的函数&#xff0c;创建基类指针指向派生类对象&#xff0c;调用相应的函数&#x…

简易网站制作软件网站开发运营推广叫什么软件

CSer发一篇顶会一作有多难&#xff1f;没写论文前&#xff0c;一直认为搞科研不着急&#xff0c;压根就没有把论文这件事放在心上。研一的时候进课题组&#xff0c;导师说要开拓新的方向&#xff0c;于是成了实验室第一个吃螃蟹的人&#xff0c;日常也没有人可以寻求指导。那时…

酒店网站建设必要性龙口网站建设联系电话

一、贪心算法 贪心算法是一种解决优化问题的算法设计方法&#xff0c;其核心思想是在每一步选择当前状态下的最优解&#xff0c;从而希望最终达到全局最优解。下面将介绍贪心算法的原理、实现步骤&#xff0c;并提供C#和Java的实现示例。 1.1 原理&#xff1a; 贪心算法的原…

洛阳网站改版维护公司厦门seo建站

点击 <C 语言编程核心突破> 快速C语言入门 使用Qt画一条曲线 前言一、Qchart简介二、代码总结 前言 要解决问题: 有一个函数, 生成一些点, 想画一条曲线. 想到的思路: 这个用Qchart比较简单. 其它的补充: 需要稍许配置 一、Qchart简介 QChart是Qt中的一个图表控件&a…

flash网站作品欣赏网页设计实训报告300字

接到现场反映&#xff0c;在配置Modbus转Profinet网关时&#xff0c;出现Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;通信不稳定或数据丢失的问题&#xff0c;就这个问题特做出答疑。 解决Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;通信不稳定或数据…

自己做网站要多久建e网室内设计网网址

2019独角兽企业重金招聘Python工程师标准>>> 今天心情很不好&#xff01;&#xff01;&#xff01; 原因保密。 这篇是基于"netty与websocket通信demo"。 错误想法&#xff1a;大量客户请求&#xff0c;共用一个worker&#xff0c;来实现推送。 正确作法&…

特色的企业网站建设域名举例

《组织职业生涯管理》作业答案 一、单选题 1、人力资源供过于求的表现不包括_________ A、职业岗位缺乏 B、社会就业不足 C、政府促进就业政策 D、职业选择余地较大 2、职业的个人功能不包括___________ A、社会稳定的安全阀 B、获取利益的手段 C、个人发挥才能的手段 D、社会贡…

维影企业网站管理系统西苑做网站公司

为什么80%的码农都做不了架构师&#xff1f;>>> 你想知道你的Go程序在做什么吗&#xff1f; go tool trace 可以向你揭示&#xff1a;Go程序运行中的所有的运行时事件。 这种工具是Go生态系统中用于诊断性能问题时&#xff08;如延迟&#xff0c;并行化和竞争异常…