任务37:生成 JWT Token
实现给用户办法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的值
出现错误的原因:
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
关注 - 5
粉丝 - 44
» 下一篇: 任务38:JWT 设计解析及定制
转载于:https://www.cnblogs.com/owenzh/p/11301005.html
任务37:生成 JWT Token相关推荐
- jjwt生成jwt token
JJWT生成token jjwt 0.9.0版本 jjwt0.11.2版本 版本区别 第一个问题 第二个问题 第三个问题 最近在一个项目中不经意间升级了jjwt的版本(0.9.0升级到0.11.2), ...
- JWT Token在线编码生成
JWT Token在线编码生成 JWT Token在线编码生成 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.本工具提供在线编码的功能 JSON Web Token(缩写 ...
- 一文详解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 ...
- Spring Security Jwt Token 自动刷新
token的自动刷新 一.功能需求 二.功能分析 1.token 的生成 2.token 的自动延长 3.系统资源的保护 4.用户如何传递 token 三.实现思路 1.生成 token 和 refr ...
- jwt的token自动续约_SpringSecurity Jwt Token 自动刷新的实现
功能需求 最近项目中有这么一个功能,用户登录系统后,需要给 用户 颁发一个 token ,后续访问系统的请求都需要带上这个 token ,如果请求没有带上这个 token 或者 token 过期了,那 ...
- Python 生成 JWT(json web token) 及 解析方式
一.关于 jwt 的原理及概念可以自行在网络上搜索了解一下,这里推荐一篇写的比较好的博客 深入了解Json Web Token之概念篇 另附 JWT 的官方文档: https://jwt.io/int ...
- jwt token注销_JWT生成token及过期处理方案
## 业务场景 在前后分离场景下,越来越多的项目使用token作为接口的安全机制,APP端或者WEB端(使用VUE.REACTJS等构建)使用token与后端接口交互,以达到安全的目的.本文结合sta ...
- 完成登录并生成JWT
然后我们尝试登录,因为之前我们已经设置了用户名密码为user/111111,所以我们提交表单的时候再带上我们的token和验证码. 这时候我们就可以去提交表单了吗,其实还不可以,为啥?因为就算我们登录 ...
- 更轻易地实现 Jwt Token
更轻易地实现一个 Jwt Server Intro 最近在多个项目中都有用到 Jwt Token 认证,就想着把之前项目里 Jwt Token 的使用封装一下,以便于之后集成起来更加地方便,不用再拷贝 ...
最新文章
- C#创建TCP/IP服务端和客户端,含测试demo及源码
- Android stadio 导入不在当前工程目录里的工程
- RobotFrameWork控制流之if语句——Run Keyword If
- Java-打印三角形
- ​什么问题最让程序员头秃?我们分析了11种语言的11000个问题
- .Net Core WebApi集成JWT实现身份认证
- Lattice Diamond 学习总结---“疑难杂症”杂篇
- android微信朋友圈相册背景,微信朋友圈相册背景多大尺寸合适
- java按顺序生成编号_Java生成有规则的编号
- C盘清理笔记 msp文件和msi文件
- 自动驾驶行业观察 | Level 2到Level 4的泊车辅助系统技术剖析
- C# Delegate引介
- 第一次使用scrapy爬豆瓣top250 报错 AttributeError Requset has no attribute dont_filter 和 meta
- 真·浅谈System.setOut()
- centos安装cerebro
- 科技幻想(一)——便捷人机交互
- 做智能眼镜是为了更方便地拍摄
- 设备配网专题《原理分析,设备配网技术之AirKiss微信配网》
- php iofactory列,PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
- Python学习笔记(一)1.Python中end=和sep=的用法与区别。
热门文章
- php radiobutton,radiobutton怎么用
- php 发帖代码,我的论坛源代码(四)_php
- 2021年面试前端岗位需要注意什么?
- 初级Web前端工程师是什么?初级Web前端工程师的技术体系有哪些?
- 【C语言】在线OJ题 BC53-BC70 -牛客网编程初学者入门训练
- php更新数据步骤,Thinkphp5模型更新数据方法
- aop java 接口_Spring AOP实现接口验签
- 嗅觉计算机应用,sensonic计算机嗅觉分析仪
- pip install keras_常用基本pip命令及报错问题解决(不断更新)
- as button onitemclicklistener为null_为vue3.0的学习TS解读高级类型