【发布时间】:2015-05-04 18:17:21
【问题描述】:
我正在编写一个应用程序,该应用程序需要始终从数据库中删除/不存在个人身份信息。鉴于有人可能在他们的用户名中使用他们的真实姓名,并且他们的 AspUserIdentity 记录中可能存在一个电子邮件地址,我决定一种解决方案可能是散列这些值。简单来说:当有人使用用户名登录时,我对他们输入的用户名进行哈希处理,然后查看该哈希是否存在于数据库中;如果是这样,那么我将它们登录。这很容易做到,并且可以通过修改 AccountController 中的 Login 和 Register 方法来正常工作。但是现在我对输入的用户名一无所知......
我可以将用户名存储在会话中,但这似乎很简单。我想做的是更新成功登录后发送的cookie,以使用他们输入的用户名(而不是存储在数据库中的散列值)。这样 User.Identity.GetUserName() 返回纯文本用户名(而不是散列用户名)。对客户来说,这个过程应该是透明的(对我来说也是程序员)。
问题是:怎么做?最好的地方是什么?当谈到最新的 ASP.NET 身份时,我仍然相对较新。我在 Startup.Auth 中看到有很多与 cookie 相关的有趣内容,但我没有看到任何可以在登录时和发送之前修改 cookie 本身的地方。
这一切都在 Owin 自身的深处吗?
提前致谢,
【问题讨论】:
标签: owin asp.net-identity-2 asp.net-authorization