【问题标题】:FormsAuthentication.Authenticate fails to authenticateFormsAuthentication.Authenticate 无法进行身份验证
【发布时间】:2011-02-08 07:43:12
【问题描述】:

我目前对 ASP.Net 身份验证有一个奇怪的问题。 考虑以下两行:

MembershipCreateStatus ct = new MembershipCreateStatus();
Membership.CreateUser("admin", "mypassword", "test@gmail.com", "1", "1", true,  out ct);

这确实在我的数据库中注册了我的用户。我已经验证了这一点。 但是,当我在之后立即运行它时:

FormsAuthentication.Authenticate("admin", "mypassword");

身份验证失败。奇怪的是我知道用户确实存在于数据库中,如果我运行,这将得到进一步证实

MembershipUserCollection uc =  Membership.FindUsersByName("admin");

而且 uc 确实为我的管理员用户提供了所有正确的信息。 关于为什么 Authenticate 会返回 false 的任何想法或提示?

【问题讨论】:

  • 整个序列是否包含单个 http 请求?您可以尝试在两个单独的请求过程中执行此操作。如何创建一次“管理员”,Session.Abandon(),重新加载页面,然后查看是否能够进行身份验证。
  • 嗯,不。即使我尝试在单独的页面上进行身份验证也不行。问题必须来自密码部分,对吗?我的意思是,如果用户存在,还会出现什么问题?

标签: c# asp.net asp.net-membership forms-authentication


【解决方案1】:

不久前我学到了一些东西 - 在 MSDN 上查找信息时总是阅读备注部分。您会惊讶地发现它通常包含最重要的信息,如果没有涵盖这些信息,有时可能会困住您数小时甚至数天。请参阅该部分以了解该方法here。然后调用ValidateUser 进行授权,这与身份验证不同。看看here

【讨论】:

  • 啊,谢谢。那讲得通。很容易迷失在msdn中,不看每一页的备注部分呵呵。
  • 最近很多晚上都睡在那里才意识到这一点,这实际上是通过回答这个网站上的问题。我有 2-3 个问题,我连续回答了这些问题,这些问题都是从那里开始的,所以我打算看看工作中是否是这种情况,当遇到棘手的情况时,这主要是 70% 左右 - 自己尝试一下,你会的惊奇。再一次,如果“备注”是红色字体,或者更好地称该部分为“重要”,“备注”会更具可读性。这么小的东西,但微软永远不会改变它,因为这可能是他们让开发人员蒙在鼓里的混淆策略的一部分
猜你喜欢
  • 2016-01-11
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 2019-08-09
  • 2020-01-02
  • 1970-01-01
相关资源
最近更新 更多