首页 > 解决方案 > 无效的对象名称'RefreshToken

问题描述

我正在尝试使用 sql 作为数据库和 asp.net 核心作为前端使用 jwt 和刷新令牌创建登录系统。

我得到以下错误。在数据库中,我创建了用户表,但没有创建 RefreshToken 表,因为 RefreshToken 将生成并保存在浏览器的 cookie 中。

无效的对象名称'RefreshToken

这是我的模型用户

  public class User
        {
            public int Id { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string Username { get; set; }
    
            [JsonIgnore]
            public string Password { get; set; }
    
            [JsonIgnore]
            public List<RefreshToken> RefreshTokens { get; set; }
        }

这是另一个模型 RefreshToken

    using Microsoft.EntityFrameworkCore;
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.Text.Json.Serialization;
    
    namespace Api_R.Entities
    {
      [Owned]
        public class RefreshToken
        {
            [Key]
            [JsonIgnore]
            public int Id { get; set; }
            public string Token { get; set; }
            public DateTime Expires { get; set; }
           /////////
        }
    }

在这里我正在使用我的控制器

          public AuthenticateResponse Authenticate(AuthenticateRequest model, string ipAddress)
            {
                var user = _apiDbContext.User.SingleOrDefault(x => x.Username == model.Username && x.Password==model.Password);
    
                // validate
                if (user == null)//|| !BCryptNet.Verify(model.Password, user.PasswordHash))
                    throw new AppException("Username or password is incorrect");
    
                // authentication successful so generate jwt and refresh tokens
                var jwtToken = _jwtUtils.GenerateJwtToken(user);
                var refreshToken = _jwtUtils.GenerateRefreshToken(ipAddress);
               
                user.RefreshTokens.Add(refreshToken);
    
                // remove old refresh tokens from user
                removeOldRefreshTokens(user);
    
               
    
                return new AuthenticateResponse(user, jwtToken, refreshToken.Token);
            }
    

现在我收到错误无效对象名称刷新令牌

标签: asp.net-core

解决方案


推荐阅读