0

根据我一直在阅读的内容,以下代码应首先确保“ArthurDent”存在 MembershipUser 记录,然后将“ArthurDent”设置为当前用户,最后将他的 MembershipUser 记录分配给变量 mUser。

if (Membership.GetUser("ArthurDent") == null)
{
   Membership.CreateUser("ArthurDent", "thisisapassword");
}
FormsAuthentication.SetAuthCookie("ArthurDent", true);
MembershipUser mUser = Membership.GetUser();

相反,变量 mUser 保持为空。

我的目标是以编程方式将当前用户设置为有效记录,以便我可以在将 BlogEngine 添加到我的网站时开始出错的页面上设置 WebPartManager.DisplayMode。

4

2 回答 2

0

当应用程序违反 web.config 文件中定义的规则时,通常会出现此问题。例如,我在本地环境中使用 Windows 身份验证和 CreateUser 运行您的代码最初失败,因为密码字符串长度不足。我用其他字符填充了密码,并能够使用提供的代码创建用户。检查该部分以检查密码先决条件。在第一次检查时,这看起来像是一个配置问题。

于 2013-07-09T18:17:34.770 回答
0

答案是 BlogEngine 主动抑制 Page.User.Identity 的正常工作,Membership.GetUser() 检索该页面。当我用 BlogEngine 中的以下代码替换 FormsAuthentication.SetAuthCookie 时...

Security.AuthenticateUser("ArthurDent", "thisisapassword", true);

...它验证了亚瑟并让他登录。

于 2013-07-09T19:53:51.983 回答