从登录用户获取产品时出错。ASP.NET Core MVC

埃德里安·比亚吉

我只能购买已登录用户(即进行购买的用户)购买的产品时遇到了麻烦。

我有一个Users包含常规注册数据的Customers和一个表。

表之间的关系如下:

  • User:userId,名称,电子邮件,密码
  • Customer:customerId,状态,section_id,user_id
  • Product:productId,名称,价格,purchase_date,customer_id

那么,该Products表与表相关Customers,而不与该Users表相关。而且我无法更改,因为数据库中还有其他应用程序在查询。

我尝试以这种方式获取产品,但是id的值为Customernull。

public IActionResult View(int id)
{
    User user = _loginUser.GetUser();
    Product product = _pedidoRepository.GetProduct(id);

    if (product.customer_id != user.Customer.customerId)
    {
        return new ContentResult() { Content = "Access denied" };
    }

    return View(product);
}

我得到错误:

Project.Models.users.Customer.get返回null

如何使ClientID可访问以进行比较?

我的GetUser方法如下所示:

public user GetUser()
{
    // Deserializar
    if( _session.Exists(Key)) 
    {
        string user JSONString = _session.Consult(Key);
        return JsonConvert.DeserializeObject<user>(userJSONString);
    }
    else
    {
        return null;
    }
}

重要的是要说“用户”和“客户”之间的关系是一对一的。注册“用户”时,在表中用“ k”表示“用户”来注册“客户”

类User.cs

public class User
{
    /* PK */
    [Key]
    public int userId { get; set; }
    public string name { get; set; }
    public string email{ get; set; }
    public string passwor{ get; set; }

    [ForeignKey("user_id")]
    [JsonIgnore]
    public Customer Customer { get; set; }
}

类Customer.cs

public class Customer
{
    /* PK */
    [Key]
    public int customerId{ get; set; }
    public string Status { get; set; }
   
    [Column("user_id")]
    [ForeignKey("User")]
    public int? user_id { get; set; }
    public virtual User User { get; set; }
    .
    .
}

类Product.cs

public class Product
{
    /* PK */
    [Key]
    public int productId{ get; set; }
    public string name { get; set; }
    public decimal price { get; set; }
    public DateTime  purchase_date { get; set; }

    [Column("customer_id")]
    [ForeignKey("Customer")]
    public int? customer_id{ get; set; }
    public virtual Customer Customer { get; set; }
}

我感谢任何评论。我从语言开始。如果需要,我可以发送更多代码。

马克西姆·扎博洛茨克(Maxim Zabolotskikh)

好吧,我假设您的会话持有用户的JSON表示形式,该表示形式是在数据库中查询的。发生这种情况时,将查询没有Customer导航属性的用户(因此它为null)。当您以后访问User.Customer时,User实体不再附加到DbContext,因此不会从DB加载Customer。如果我的假设是正确的,我将提出两个选择:

  1. 填充会话对象时,向用户查询已加载的客户,例如 context.Users.Include(c => c.Customer).GetById(x)
  2. 在您的方法中,使用userId从数据库中查询客户。也就是说,您从会话中获得用户,但从数据库中获得了匹配的客户。

选择取决于Cutomer与大多数电话相关还是仅与单个电话相关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取ASP.NET Core MVC中当前登录用户的角色

来自分类Dev

在Asp.Net MVC 5中获取已登录用户的UserID

来自分类Dev

ASP.NET MVC4获取登录用户的电子邮件

来自分类Dev

获取登录用户角色:Asp.net MVC5

来自分类Dev

如何在ViewComponent Asp.Net Core中获取当前的登录用户

来自分类Dev

使用ASP.NET Core MVC获取用户输入

来自分类Dev

ASP.NET 5 MVC 6-登录用户

来自分类Dev

如何通过接口获取当前登录的用户名,以在asp.net core mvc中按列插入更新?

来自分类Dev

ASP.NET Core MVC视图附件

来自分类Dev

如何在 ASP.NET Core Identity 中控制器的构造函数中获取登录用户名

来自分类Dev

Bearer Token Auth - 如何在控制器 ASP.NET Core 2.1 中获取登录用户值

来自分类Dev

在ASP.NET Core MVC中设置新的登录页面

来自分类Dev

ASP.NET Core MVC身份登录问题

来自分类Dev

ASP.NET Core MVC 和 EF Core 1.1

来自分类Dev

与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

来自分类Dev

在Identity Asp.net core 3 MVC中创建服务IUserStore时出错

来自分类Dev

使用AddSignInManager时的ASP.NET Core MVC异常

来自分类Dev

具有ASP.NET标识的MVC 5-用户登录时获取声明

来自分类Dev

ASP.NET MVC5身份:避免在注册后更改登录用户

来自分类Dev

在用户注册时创建附加数据 (ASP.NET Core MVC 2.1)

来自分类Dev

在Asp.Net Core的Razor页面中检查登录用户AuthorizePolicy

来自分类Dev

删除ASP.NET Core Identity中已登录用户的策略

来自分类Dev

ASP.NET MVC-获取用户的登录状态

来自分类Dev

状态 cookie 无效。处理远程登录时遇到错误。ASP.NET Core MVC 外部社交登录

来自分类Dev

查看ASP.NET MVC与ASP.NET Core MVC之间的目录编译时间差

来自分类Dev

如何为多个用户角色构造.NET Core MVC项目?

来自分类Dev

ASP.NET Core MVC + Entity Framework Core如何获取新添加的对象的ID

来自分类Dev

如何在ASP.NET MVC 6(ASP.NET Core)中获取returnUrl AccessDeniedPath

来自分类Dev

为什么ASP.NET Core MVC 3.1项目不会让我使用Identity使用注册用户登录

Related 相关文章

  1. 1

    获取ASP.NET Core MVC中当前登录用户的角色

  2. 2

    在Asp.Net MVC 5中获取已登录用户的UserID

  3. 3

    ASP.NET MVC4获取登录用户的电子邮件

  4. 4

    获取登录用户角色:Asp.net MVC5

  5. 5

    如何在ViewComponent Asp.Net Core中获取当前的登录用户

  6. 6

    使用ASP.NET Core MVC获取用户输入

  7. 7

    ASP.NET 5 MVC 6-登录用户

  8. 8

    如何通过接口获取当前登录的用户名,以在asp.net core mvc中按列插入更新?

  9. 9

    ASP.NET Core MVC视图附件

  10. 10

    如何在 ASP.NET Core Identity 中控制器的构造函数中获取登录用户名

  11. 11

    Bearer Token Auth - 如何在控制器 ASP.NET Core 2.1 中获取登录用户值

  12. 12

    在ASP.NET Core MVC中设置新的登录页面

  13. 13

    ASP.NET Core MVC身份登录问题

  14. 14

    ASP.NET Core MVC 和 EF Core 1.1

  15. 15

    与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

  16. 16

    在Identity Asp.net core 3 MVC中创建服务IUserStore时出错

  17. 17

    使用AddSignInManager时的ASP.NET Core MVC异常

  18. 18

    具有ASP.NET标识的MVC 5-用户登录时获取声明

  19. 19

    ASP.NET MVC5身份:避免在注册后更改登录用户

  20. 20

    在用户注册时创建附加数据 (ASP.NET Core MVC 2.1)

  21. 21

    在Asp.Net Core的Razor页面中检查登录用户AuthorizePolicy

  22. 22

    删除ASP.NET Core Identity中已登录用户的策略

  23. 23

    ASP.NET MVC-获取用户的登录状态

  24. 24

    状态 cookie 无效。处理远程登录时遇到错误。ASP.NET Core MVC 外部社交登录

  25. 25

    查看ASP.NET MVC与ASP.NET Core MVC之间的目录编译时间差

  26. 26

    如何为多个用户角色构造.NET Core MVC项目?

  27. 27

    ASP.NET Core MVC + Entity Framework Core如何获取新添加的对象的ID

  28. 28

    如何在ASP.NET MVC 6(ASP.NET Core)中获取returnUrl AccessDeniedPath

  29. 29

    为什么ASP.NET Core MVC 3.1项目不会让我使用Identity使用注册用户登录

热门标签

归档