Я создаю базовую аутентификацию с использованием JWT в ASP.NET Core MVC ver. 6. После входа в систему я устанавливаю токен для сеанса. Всякий раз, когда я захожу на панель управления, я проверяю этот токен, отправляя запросы AJAX контроллеру. С контроллера я проверяю этот токен.
Проблема в том, что функция Decode продолжает возвращать данные
NullRefferenceException
Хотя я только что жестко запрограммировал токен.
Я использую этот пакет:
JWT .Net
Вот мой ajax с панели управления:
function checkToken() {
//var token = sessionStorage.getItem("loginSession");
var data = {
token: sessionStorage.getItem("loginSession")
};
console.log(data)
$.ajax({
url: '/Auth/Validate',
type: 'POST',
contentType: "application/json",
data: JSON.stringify(data),
success: function (result) {
console.log(result);
}
})
}
Вот внутренняя часть контроллера:
using JWT.Algorithms;
using JWT.Serializers;
using JWT;
using Microsoft.AspNetCore.Mvc;
using FrontEnd.ViewModel;
using NuGet.Common;
namespace FrontEnd.Controllers
{
public class AuthController : Controller
{
public IActionResult Login()
{
return View();
}
public IActionResult Register()
{
return View();
}
public IActionResult Forgot()
{
return View();
}
[HttpPost]
public string Validate([FromBody]AuthVM authVM)
{
//var token = authVM?.token;
//if (string.IsNullOrEmpty(token))
//{
// throw new ArgumentException("Token is null or empty");
//}
var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImFzZEBlbWFpbC5jb20iLCJuYW1lIjoiTGFydWUgTW9ociJ9.l37wEV8ttLXBW5pMa8dMj7iAz6eWnaqiMbG93gpUOzA";
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IDateTimeProvider provider = new UtcDateTimeProvider();
IJwtValidator validator = new JwtValidator(serializer, provider);
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm);
var payload = decoder.Decode(token);
return payload;
}
}
}
и ViewModel :
namespace FrontEnd.ViewModel
{
public class AuthVM
{
public string token { get; set; }
}
}
Как видите, я отправляю токен из запросов Ajax и получаю его через модель представления под названием AuthVM
Я могу получить его, вызвав authVm.token< /code> выдает ошибку NullReferenceException. Затем я попытался жестко запрограммировать токен, но он все равно возвращает эту ошибку.
Я объявляю неправильную функцию декодирования?
Вот трассировка стека
code> я получаю ошибку
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=JWT
StackTrace:
at JWT.JwtDecoder.c.b__20_0(Byte[] key)
at System.Array.TrueForAll[T](T[] array, Predicate`1 match)
at JWT.JwtDecoder.ValidSymmetricAlgorithm(Byte[][] keys, String decodedPayload, IJwtAlgorithm algorithm, Byte[] bytesToSign, Byte[] decodedSignature)
at JWT.JwtDecoder.Validate(JwtParts jwt, Byte[][] keys)
at JWT.JwtDecoder.Decode(JwtParts jwt, Byte[][] keys, Boolean verify)
at FrontEnd.Controllers.AuthController.Validate(AuthVM authVM) in C:\Users\Redactedhehe\source\repos\UniversityAPI\FrontEnd\Controllers\AuthController.cs:line 54
Подробнее здесь: https://stackoverflow.com/questions/790 ... eexception
JWT Decode выдает исключение NullReferenceException ⇐ C#
Место общения программистов C#
-
Anonymous
1727340032
Anonymous
Я создаю базовую аутентификацию с использованием JWT в ASP.NET Core MVC ver. 6. После входа в систему я устанавливаю токен для сеанса. Всякий раз, когда я захожу на панель управления, я проверяю этот токен, отправляя запросы AJAX контроллеру. С контроллера я проверяю этот токен.
Проблема в том, что функция Decode продолжает возвращать данные
NullRefferenceException
Хотя я только что жестко запрограммировал токен.
Я использую этот пакет:
JWT .Net
Вот мой ajax с панели управления:
function checkToken() {
//var token = sessionStorage.getItem("loginSession");
var data = {
token: sessionStorage.getItem("loginSession")
};
console.log(data)
$.ajax({
url: '/Auth/Validate',
type: 'POST',
contentType: "application/json",
data: JSON.stringify(data),
success: function (result) {
console.log(result);
}
})
}
Вот внутренняя часть контроллера:
using JWT.Algorithms;
using JWT.Serializers;
using JWT;
using Microsoft.AspNetCore.Mvc;
using FrontEnd.ViewModel;
using NuGet.Common;
namespace FrontEnd.Controllers
{
public class AuthController : Controller
{
public IActionResult Login()
{
return View();
}
public IActionResult Register()
{
return View();
}
public IActionResult Forgot()
{
return View();
}
[HttpPost]
public string Validate([FromBody]AuthVM authVM)
{
//var token = authVM?.token;
//if (string.IsNullOrEmpty(token))
//{
// throw new ArgumentException("Token is null or empty");
//}
var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImFzZEBlbWFpbC5jb20iLCJuYW1lIjoiTGFydWUgTW9ociJ9.l37wEV8ttLXBW5pMa8dMj7iAz6eWnaqiMbG93gpUOzA";
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IDateTimeProvider provider = new UtcDateTimeProvider();
IJwtValidator validator = new JwtValidator(serializer, provider);
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm);
var payload = decoder.Decode(token);
return payload;
}
}
}
и ViewModel :
namespace FrontEnd.ViewModel
{
public class AuthVM
{
public string token { get; set; }
}
}
Как видите, я отправляю токен из запросов Ajax и получаю его через модель представления под названием AuthVM
Я могу получить его, вызвав authVm.token< /code> выдает ошибку NullReferenceException. Затем я попытался жестко запрограммировать токен, но он все равно возвращает эту ошибку.
Я объявляю неправильную функцию декодирования?
Вот трассировка стека
code> я получаю ошибку
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=JWT
StackTrace:
at JWT.JwtDecoder.c.b__20_0(Byte[] key)
at System.Array.TrueForAll[T](T[] array, Predicate`1 match)
at JWT.JwtDecoder.ValidSymmetricAlgorithm(Byte[][] keys, String decodedPayload, IJwtAlgorithm algorithm, Byte[] bytesToSign, Byte[] decodedSignature)
at JWT.JwtDecoder.Validate(JwtParts jwt, Byte[][] keys)
at JWT.JwtDecoder.Decode(JwtParts jwt, Byte[][] keys, Boolean verify)
at FrontEnd.Controllers.AuthController.Validate(AuthVM authVM) in C:\Users\Redactedhehe\source\repos\UniversityAPI\FrontEnd\Controllers\AuthController.cs:line 54
Подробнее здесь: [url]https://stackoverflow.com/questions/79026274/jwt-decode-is-throwing-nullreferenceexception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия