根据我一直在阅读的内容,以下代码应首先确保“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。
答案 0 :(得分:0)
当应用程序违反web.config文件中定义的规则时,通常会发生此问题。例如,我首先使用Windows身份验证和CreateUser在本地环境中运行代码失败,因为密码字符串长度不足。我用其他字符填充密码,并能够使用提供的代码创建用户。检查该部分以检查密码先决条件。 在第一次检查时,这看起来像配置问题。
答案 1 :(得分:0)
答案是BlogEngine主动抑制了Page.User.Identity的正常工作,Membership.GetUser()检索它。当我用BlogEngine中的以下代码替换FormsAuthentication.SetAuthCookie时......
Security.AuthenticateUser("ArthurDent", "thisisapassword", true);
......它认证了亚瑟并让他登录。