【问题标题】:Adding Windows User Name to database将 Windows 用户名添加到数据库
【发布时间】:2011-11-11 00:46:59
【问题描述】:

这里是 ASP.NET MVC3 新手。

我正在开发一个使用 Windows 身份验证的 MVC3 Intranet 应用程序。 Windows 身份验证已设置好,可以开始使用了。

我需要做的是在用户第一次访问应用程序时捕获用户名 (Domain\first.last),然后将该信息存储到数据库中并将该名称与另一个唯一标识符(数字和自动递增)。

我已经找到了获取用户名的方法:

string user = WindowsIdentity.GetCurrent().Name;

我遇到的问题是获取该变量并将其存储在我的数据库中。

非常感谢任何对有用资源的建议、提示、提示或轻推。

抱歉,如果这个场景被发布在其他地方,如果是,那么我无法找到它。

干杯,伙计们!

【问题讨论】:

    标签: c# asp.net database asp.net-mvc-3


    【解决方案1】:

    小心 - 用户名和显示名可能会更改。我会避免将它们存储在数据库中。

    相反,请查看存储 SID(用户 ID)。 WindowsIdentity 的 User 属性返回 SID。您可以出于显示目的存储和更新用户名,但不要依赖它来将身份验证用户键入回数据库中的前一个用户。

    也请参阅此 SO 帖子:

    How can I get the SID of the current Windows account?

    保留 SID(连同仅用于显示的用户名)并通过 SID 查找。

    【讨论】:

    • 谢谢@bryanmac!这真的很有帮助。我想我应该能够用你和@Adam Tuliper 发布的内容来完成我所需要的。再次感谢!
    【解决方案2】:

    我认为您在这里寻找的实际上是“如何在数据库中存储一些信息” 什么数据库系统?

    退房 http://www.datasprings.com/resources/articles-information/a-quick-guide-to-using-entity-framework

    您可以轻松地使用实体框架将该值存储在数据库中,这正是我认为您的问题的真正意义所在。不过,我确实同意 Bryanmac,您应该存储 SID 而不是登录名,以防名称发生变化。如果您知道它会永不更改,那么您可以存储名称,但由于它们在 Windows 中技术上可以更改,我会意识到这一点。 如果您有关于如何使用实体框架存储该字段的具体问题,请发布。

    【讨论】:

    • 你是对的!我试图详细说明这个问题,但哦,好吧。是的,基本上我想找到一种将这些信息映射到数据库的方法。我会注意@bryanmac 和您关于使用 sid 的建议,并查看您发布的链接。非常感谢!
    【解决方案3】:

    当您创建 MVC3 应用程序时,有一个“Intranet 应用程序”选项,它的所有 Windows 身份验证内容都已经工作,您可能需要检查一下并提取当前项目的代码片段(或根据你的距离迁移你拥有的东西)。

    它在 Web.Config 以及它创建的额外文件中放置了一些特殊代码。

    在这里阅读更多:

    http://weblogs.asp.net/gunnarpeipman/archive/2011/04/14/asp-net-mvc-3-intranet-application-template.aspx

    这里:

    http://msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx

    您还需要使用User.Identity.Name 来引用查看该网站的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      相关资源
      最近更新 更多