实现给用户办法token

默认是可以访问valuesController的,返回的状态是200

http://localhost:5429/api/values

返回的状态码是200

把ValuesController加上属性值:[Authorize]

再次访问,没有权限访问。返回401状态码

新建文件夹:ViewModels

LoginViewModel类来接收用户的参数和密码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;namespace JwtAuthSample.ViewModels
{public class LoginViewModel{public string User { get; set; }public string Password { get; set; }}
}

LoginViewModel

创建API控制器:AuthorizeController

给LoginViewModel加上必填的属性:

我们要把。appsettings.json内配置的jwtsettings的信息读取出来

所以这里引入命名空间:using Microsoft.Extensions.Options;

然后需要生成我们的tokens需要引入命名空间:

VScode需要安装Nuet的包的扩展

我在VS2017里面直接安装包:Microsoft.AspNetCore.Authentication.JwtBearer

然后可以引入我们的命名空间了:

using System.IdentityModel.Tokens.Jwt;

生成token的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using JwtAuthSample.ViewModels;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;
using Microsoft.Extensions.Options;
using System.Text;
using System.IdentityModel.Tokens.Jwt;

命名空间

public IActionResult Token(LoginViewModel viewmodel){if (ModelState.IsValid){if (!(viewmodel.User == "wjw" && viewmodel.Password == "123456")){return BadRequest();}var claims = new Claim[] {new Claim(ClaimTypes.Name,"wjw"),new Claim(ClaimTypes.Role,"admin")};var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtsettings.SecretKey));//把我们的key放进来,并给它一个算法var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);var token = new JwtSecurityToken(_jwtsettings.Issure, _jwtsettings.Audoence,claims, DateTime.Now,//当前时间DateTime.Now.AddMinutes(30),//过期时间 加了30分钟
                    creds);return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });}return BadRequest();}

Token

这里要注意一下:我们需要在StartUp里面进行配置

StartUp里面配置

SecretKey的长度必须大于16个字符,也就是128个字节以上

必须配置上默认的路由才能访问到我的AuthorizeController

如果不配置默认的路由信息就访问不到这个Controller

 app.UseMvc(routes =>{routes.MapRoute(name: "Default",template: "{controller}/{action}/{id?}",defaults: new { controller = "Authorize", action = "post" });});

直接用默认的路由也是可以的:相当于上面那一段routes.MapRoute{}那一段代码

app.UseMvcWithDefaultRoute();

http://localhost:5429/Authorize/Post?User=wjw&Password=123456

参数user:wjw

参数2:Password:123456

复制获取到的token

Authorization:bearer 复制的token的值

出现错误的原因:


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

标签 ASP.NET Core快速入门
好文要顶 已关注 收藏该文

GASA
关注 - 5
粉丝 - 44

我在关注他 取消关注

0
0

« 上一篇: 2-4算术运算符
» 下一篇: 任务38:JWT 设计解析及定制

转载于:https://www.cnblogs.com/owenzh/p/11301005.html

任务37:生成 JWT Token相关推荐

  1. jjwt生成jwt token

    JJWT生成token jjwt 0.9.0版本 jjwt0.11.2版本 版本区别 第一个问题 第二个问题 第三个问题 最近在一个项目中不经意间升级了jjwt的版本(0.9.0升级到0.11.2), ...

  2. JWT Token在线编码生成

    JWT Token在线编码生成 JWT Token在线编码生成 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.本工具提供在线编码的功能 JSON Web Token(缩写 ...

  3. 一文详解jwt token以及sprig boot如何整合实现 jwt token操作

    文章目录 1. jwt是什么 2. jwt的来源 2.1 传统的session认证 2.2 基于token的鉴权机制 3. JWT的构成 3.1 header 3.2 playload 3.3 sig ...

  4. Spring Security Jwt Token 自动刷新

    token的自动刷新 一.功能需求 二.功能分析 1.token 的生成 2.token 的自动延长 3.系统资源的保护 4.用户如何传递 token 三.实现思路 1.生成 token 和 refr ...

  5. jwt的token自动续约_SpringSecurity Jwt Token 自动刷新的实现

    功能需求 最近项目中有这么一个功能,用户登录系统后,需要给 用户 颁发一个 token ,后续访问系统的请求都需要带上这个 token ,如果请求没有带上这个 token 或者 token 过期了,那 ...

  6. Python 生成 JWT(json web token) 及 解析方式

    一.关于 jwt 的原理及概念可以自行在网络上搜索了解一下,这里推荐一篇写的比较好的博客 深入了解Json Web Token之概念篇 另附 JWT 的官方文档: https://jwt.io/int ...

  7. jwt token注销_JWT生成token及过期处理方案

    ## 业务场景 在前后分离场景下,越来越多的项目使用token作为接口的安全机制,APP端或者WEB端(使用VUE.REACTJS等构建)使用token与后端接口交互,以达到安全的目的.本文结合sta ...

  8. 完成登录并生成JWT

    然后我们尝试登录,因为之前我们已经设置了用户名密码为user/111111,所以我们提交表单的时候再带上我们的token和验证码. 这时候我们就可以去提交表单了吗,其实还不可以,为啥?因为就算我们登录 ...

  9. 更轻易地实现 Jwt Token

    更轻易地实现一个 Jwt Server Intro 最近在多个项目中都有用到 Jwt Token 认证,就想着把之前项目里 Jwt Token 的使用封装一下,以便于之后集成起来更加地方便,不用再拷贝 ...

最新文章

  1. C#创建TCP/IP服务端和客户端,含测试demo及源码
  2. Android stadio 导入不在当前工程目录里的工程
  3. RobotFrameWork控制流之if语句——Run Keyword If
  4. Java-打印三角形
  5. ​什么问题最让程序员头秃?我们分析了11种语言的11000个问题
  6. .Net Core WebApi集成JWT实现身份认证
  7. Lattice Diamond 学习总结---“疑难杂症”杂篇
  8. android微信朋友圈相册背景,微信朋友圈相册背景多大尺寸合适
  9. java按顺序生成编号_Java生成有规则的编号
  10. C盘清理笔记 msp文件和msi文件
  11. 自动驾驶行业观察 | Level 2到Level 4的泊车辅助系统技术剖析
  12. C# Delegate引介
  13. 第一次使用scrapy爬豆瓣top250 报错 AttributeError Requset has no attribute dont_filter 和 meta
  14. 真·浅谈System.setOut()
  15. centos安装cerebro
  16. 科技幻想(一)——便捷人机交互
  17. 做智能眼镜是为了更方便地拍摄
  18. 设备配网专题《原理分析,设备配网技术之AirKiss微信配网》
  19. php iofactory列,PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
  20. Python学习笔记(一)1.Python中end=和sep=的用法与区别。

热门文章

  1. php radiobutton,radiobutton怎么用
  2. php 发帖代码,我的论坛源代码(四)_php
  3. 2021年面试前端岗位需要注意什么?
  4. 初级Web前端工程师是什么?初级Web前端工程师的技术体系有哪些?
  5. 【C语言】在线OJ题 BC53-BC70 -牛客网编程初学者入门训练
  6. php更新数据步骤,Thinkphp5模型更新数据方法
  7. aop java 接口_Spring AOP实现接口验签
  8. 嗅觉计算机应用,sensonic计算机嗅觉分析仪
  9. pip install keras_常用基本pip命令及报错问题解决(不断更新)
  10. as button onitemclicklistener为null_为vue3.0的学习TS解读高级类型