【问题标题】:How do you use User.Identity.GetUserId();你如何使用 User.Identity.GetUserId();
【发布时间】:2017-01-28 02:07:26
【问题描述】:

我正在使用 Visual Studio,而且我是新手。我正在尝试执行以下操作:

  • 用户登录并点击一个名为“主题”的页面
  • 检查用户是否已登录(如果未登录,则显示“您必须登录..”)
  • 如果用户已登录,请从“主题”表中获取他们的信息(我应该注意我的表的结构不“正确”,因为此时我只是在测试/学习一些东西)。
  • 如果“tutor”下的 Subjects 表中的值为 0 - 返回页面并显示“您学习的科目列表”,否则,返回“您教授的科目列表”。

我已经为此工作了好几个小时,但一直出错。主要是我想我不明白 User.Identity.GetUserId();有效,因为我试图将它返回的值与 subject 表中的 userID 进行比较,因为我假设它从 AspNetUsers 表中获取 ID,所以我尝试匹配它们。当我尝试访问主题页面时出现错误:“附加信息:DbComparisonExpression 需要具有可比较类型的参数。”它们都是相同的类型(nvarchar),在此之前它们是不同的数据类型,我一直在比较时遇到问题,这就是为什么我改变它们来测试它。

所以无论如何我认为问题是我不知道如何 User.Identity.GetUserId();有效,它究竟返回了什么。我假设它从 AspNetUsers 表返回 UserId,不知道为什么,但可能是我得到比较错误的原因。

这是我的代码的一部分:

SubjectsContext1 db = 新的 SubjectsContext1(); if (User.Identity.IsAuthenticated) { //检查用户是否登录 var userInfo = User.Identity.GetUserId(); //获取登录用户信息 //从主题表中查找登录用户信息(此处有错误) var userData =(来自 db.Subjects 中的 c 其中 c.studentID.Equals(userInfo) 选择 c).FirstOrDefault(); var email = userData.email; varutorStatus = userData.tutor; 如果(导师状态 == 0) { ViewBag.Message = "你学习的科目列表。"; 返回视图(); } 别的 { ViewBag.Message = "你教的科目列表。"; 返回视图(); } } 别的 { ViewBag.Message = "您必须先登录才能查看此页面!"; 返回视图(); }

我只想了解如何获取登录用户的信息,以便从我制作的主题表中获取他们的信息。

【问题讨论】:

  • User.Identity.GetUserId() 顾名思义,返回登录用户的 UserId。究竟是什么错误?
  • 在您的主题表中,您的 StudentId 应该是来自 AspNetUsers 表的字符串 (nvarchar) 类型,如果是这种情况,那么您应该不会看到任何错误
  • 我收到此错误:“在 EntityFramework.SqlServer.dll 中发生类型为 'System.ArgumentException' 的异常,但未在用户代码中处理其他信息:DbComparisonExpression 需要具有可比较类型的参数。”我需要链接表格吗?如果需要,我该怎么做?
  • 你的Student表中StudentId的类型是什么,是string(还是sql中的nvarchar)?
  • 在sql表中是nvarchar(128)

标签: c# asp.net visual-studio linq


【解决方案1】:

我不知道如何 User.Identity.GetUserId();有效,究竟是什么 返回

它从您的身份的用户表(在您的情况下为 dbo.AspNetUsers 表)返回登录用户的用户 ID,这是字符串。

确保您在 dbo.Students 表中为 StudentId 使用相同的数据类型(字符串),从 SQL Server 中的“表设计”再次确认。

【讨论】:

  • 谢谢,我意识到即使在我的表中我有相同的数据类型,但在模型中并非如此,我不得不更改它。终于搞定了,谢谢!!
猜你喜欢
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多