zoukankan      html  css  js  c++  java
  • 37-生成 JWT Token

    接到上篇文章

     安装扩展插件nuget package方法安装包

    使用 ctrl+shift+p打开命令面板

    增加这个包,  Microsoft.AspNetCore.Authentication.JwtBearer
     
    增加完后, 保存安装的包

    生成Token

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Authentication;
    using Microsoft.Extensions.Options;
    using System.Security.Claims;
    using Microsoft.AspNetCore.Authentication.JwtBearer;
    using System.IdentityModel.Tokens.Jwt;
    
    namespace JwtAuthSample.Controllers
    {
    
        [Route("api/[controller]")]
        public class AuthorizeController : ControllerBase
        {
            private Models.JwtSettings _jwtSettings{get;set;}
    
            public AuthorizeController(IOptions<Models.JwtSettings> _jwtSettings){
                this._jwtSettings = _jwtSettings.Value;
            }
    
           public IActionResult Token(LoginViewModel loginViewModel){
               if(ModelState.IsValid) {
                  if(loginViewModel.User!="qinzb" && loginViewModel.Password!="123"){
                      return BadRequest();
                  }
    
                  var claims = new Claim[]{
                        new Claim(ClaimTypes.Name,"qinzb"),
                        new Claim(ClaimTypes.Role,"admin")
                   };
                  
                  var key = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey
                  (System.Text.Encoding.UTF8.GetBytes(_jwtSettings.SecretKey));
    
                  var creds = new Microsoft.IdentityModel.Tokens.SigningCredentials
                  (key, Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256);
    
                  var token = new System.IdentityModel.Tokens.Jwt.JwtSecurityToken(
                      _jwtSettings.Issure,
                    _jwtSettings.Audience,
                    claims,
                    null,
                    DateTime.Now.AddMinutes(30),
                    creds
                  );
                  return Ok(new {token = new JwtSecurityTokenHandler().WriteToken(token)});
               }
               return BadRequest();
           }
        }
    
    
    }

    我们就可以根据 http://localhost:5000/api/Authorize?User=qinzb&Password=123获取返回的token

     

    根据获取到的token就可以访问之前的网址了,我们也可以去https://jwt.io/去校验我们的toekn

  • 相关阅读:
    P2420 让我们异或吧(倍增)
    bzoj题目分类
    hash练习们
    bzoj1433[ZJOI2009]假期的宿舍(匈牙利)
    bzoj2427:[HAOI2010]软件安装(Tarjan+tree_dp)
    bzoj2730矿场搭建(Tarjan割点)
    codevs4511信息传递(Tarjan求环)
    进入js
    css层叠样式表
    HTML超文本标记语言
  • 原文地址:https://www.cnblogs.com/qinzb/p/9357515.html
Copyright © 2011-2022 走看看