Я создаю базовую аутентификацию с использованием 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#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
SKBitmap resourcesID = SKBitmap.Decode(поток); выдает исключение System.ArgumentNullException:
Anonymous » » в форуме C# - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Декодирование JWT, AttributeError: объект 'str' не имеет атрибута 'decode'
Anonymous » » в форуме Python - 0 Ответы
- 55 Просмотры
-
Последнее сообщение Anonymous
-
-
-
SKBitmap resourceID = SKBitmap.Decode(stream); выдает ошибку System.ArgumentNullException:
Anonymous » » в форуме C# - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-