首页 > 其他分享 >JWT授权

JWT授权

时间:2023-08-09 09:13:15浏览次数:30  
标签:axios return JWT Jwt new var 授权 response

 

jwt:头部(Header)、载荷(Payload)和标记(Signature)

头部:主要是规定生成token加密方式的类型和算法,

载荷:可以存储一些用户身份信息

标记:主要作用防篡改,验证令牌的真实性和完整性

 

引用jwt包

appsettings里:

 //jwt秘钥

  "Jwt": {

    "SecretKey": "jiangjianhaotest123",

    "Issuer": "Webapitest123",

    "Audience": "Webapitest123"

  }

 

Program里:

//添加jwt授权验证

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)

    .AddJwtBearer(options =>

    {

        //取出私钥

        var secretByte = Encoding.UTF8.GetBytes(builder.Configuration["Jwt:SecretKey"]);

        options.TokenValidationParameters = new TokenValidationParameters()

        {

            //验证发布者

            ValidateIssuer = true,

            ValidIssuer = builder.Configuration["Jwt:Issuer"],

            //验证接收者

            ValidateAudience = true,

            ValidAudience = builder.Configuration["Jwt:Audience"],

            //验证是否过期

            ValidateLifetime = true,

            //验证私钥

            IssuerSigningKey = new SymmetricSecurityKey(secretByte)

        };

    });

 

 

登陆接口部分(登录控制器)

        [HttpGet]

        public async Task<IActionResult>  Login(string username, string password)

        {

            var model = await user.Login(username, password);

            int uid= model.Id;

            //Header,选择签名算法

            var signingAlogorithm = SecurityAlgorithms.HmacSha256;

            //Payload,存放用户信息,下面我们放了一个用户id

            var claims = new[]

            {

                new Claim(JwtRegisteredClaimNames.Sub,uid.ToString())

            };

            //Signature

            //取出私钥并以utf8编码字节输出

            var secretByte = Encoding.UTF8.GetBytes(configuration["Jwt:SecretKey"]);

            //使用非对称算法对私钥进行加密

            var signingKey = new SymmetricSecurityKey(secretByte);

            //使用HmacSha256来验证加密后的私钥生成数字签名

            var signingCredentials = new SigningCredentials(signingKey, signingAlogorithm);

            //生成Token

            var Token = new JwtSecurityToken(

                issuer: configuration["Jwt:Issuer"],//发布者

                audience: configuration["Jwt:Audience"],//接收者

                claims: claims,//存放用户信息

                notBefore: DateTime.UtcNow,//发布时间

                expires: DateTime.UtcNow.AddDays(1),//有效期设置一天

                signingCredentials//数字签名

                );

            //生成字符串token

            var TokenStr = new JwtSecurityTokenHandler().WriteToken(Token);

 

            return Ok(TokenStr);

        }

 

   

vue部分:

axios.defaults.timeout = 8000000

axios.defaults.baseURL = "http://localhost:5244/api/"

//http request拦截器

axios.interceptors.request.use(

    config => {

        if (localStorage.Token) {//判断token是否存在

            config.headers.Authorization = "Bearer " + localStorage.Token//将token设置成请求头

        }

        return config;

    },

    err => {

        return Promise.reject(err);

    }

);

//http response拦截器

axios.interceptors.response.use(

    response => {

        console.log(response.data)

        if (response.data.errno === 999) {

            router.replace('/')

            console.log("token过期")

        }

        return response;

    },

    error => {

        return Promise.reject(error);

    }

);

export default axios;

 

 

 

 

标签:axios,return,JWT,Jwt,new,var,授权,response
From: https://www.cnblogs.com/qibaidao/p/17615942.html

相关文章

  • json web token(jwt)详解
    1.jsonwebtoken是什么?JSONWebToken(JWT)是一个开放标准(RFC7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 2.什么时候你应该用JSONWebTokens下列场景中使用JSONWebToken是......
  • SpringSecurity5.7+最新案例 -- 授权 --
    一、前提书接上回SpringSecurity5.7+最新案例--用户名密码+验证码+记住我······本文继续处理SpringSecurity授权......目前由难->简,即自定义数据库授权,注解授权,config配置授权二、自定义授权0.数据准备SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;----......
  • 授权过滤器—MVC中使用授权过滤器实现JWT权限认证
    一、什么是过滤器?过滤器定义:​过滤器与中间件很相似,过滤器(Filters)可在管道(pipeline)特定阶段(particularstage)前或后执行操作,可以将过滤器视为拦截器(interceptors)。在.NETMVC开发中,权限验证是非常重要的一部分。通过使用授权过滤器可以很方便地实现权限验证功能。这篇主要分......
  • 微信公众号授权回调 vue网址中带#号的处理
    1、改变vue模式为history,小编没有试2、通过配置nginx实现   A、替换跳转网址中的#为其他字符串,例如我的    consturl=this._getUrl("https://open.weixin.qq.com/connect/oauth2/authorize",{appid:this.appId,......
  • 浅尝 JWT 整合到 Spring Boot
    本文,我们将JWT整合到SpringBoot中。JWT是什么?JWT->JSONWebTokenJWT是一种开放标准(RFC7519),用于在网络应用中传递声明信息。JWT到一大优势是它的可扩展性和自包含性。它可以在各个系统之间进行安全传输和验证,因为它包含了所有必要的信息,并且经过签名保证了数据的完整性......
  • CVE-2021-22205 GitLab RCE之未授权访问深入分析(一)
    文章写于2021-11-29,首发在天融信阿尔法实验室前言安全研究员vakzz于4月7日在hackerone上提交了一个关于gitlab的RCE漏洞,在当时并没有提及是否需要登录gitlab进行授权利用,在10月25日该漏洞被国外安全公司通过日志分析发现未授权的在野利用,并发现了新的利用方式。根据官方漏洞通......
  • go使用jwt生成token
    常见的认证方式一般用户认证主流的方式大致上分为基于session和基于token这两种。基于sesion的认证方式用户向服务器发送用户名和密码。服务器验证通过后,在当前对话(sesion)里面保存相关数据,比如用户角色、登录时间等等。服务器向用户返回一个session_id,写入用户的Co......
  • JAVA安全-JWT安全&预编译CASE注入
    通过前期的WEB漏洞的学习,掌握了大部分的安全漏洞的原理及利用,但在各种脚本语言开发环境的差异下,会存在新的安全问题,其中脚本语言类型PHP,Java,Python等主流开发框架会有所差异。Javaweb-SQL注入攻击-预编译机制绕过1. SQL注入的防御---防御sql注入:1.session2.参数绑......
  • 猛戳进来!小白也会懂的HTTP代理授权方式大公开
    各位小伙伴们,大家有没有遇到过一种情况——你在网上冲浪时突然遭遇到一些恼人的限制?刚想看个爆笑视频,结果被告知“禁止访问”!今天我来给大家普及一下HTTP代理授权方式,帮助解决这个问题,让我们告别网络封禁!首先,我们先来了解一下什么是HTTP代理。简单来说,HTTP代理就像是你找了......
  • Gin框架dgrijalva/jwt-go实例(JWT用户认证)
    1.什么是JWTJWT(JSONWebToken)是一个非常轻巧的规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,一个JWT由三部分组成,Header头部,Claims载荷,Signature签名JWT原理类似我们加盖公章或手写签名的的过程,合同上写了很多条款,不是随便一张纸随便写啥都可以的,......