0

我可以使用错误的密码登录 dnn 网站。当我在输入错误密码后单击登录按钮时,它会给我正确的验证消息。但是,我已登录,因为如果我刷新或浏览网站页面,我可以访问并且可以看到我的屏幕名称。

我正在使用 dnn 版本 7.1.2

单击登录按钮时,我使用以下 C# 代码:

var user = UserController.UserLogin(
            portalId, userName, password, string.Empty,
            portalName, ipAddress, ref loginStatus, checked);

每个值:

portId = 0
ipAddress = ::1
var loginStatus = UserLoginStatus.LOGIN_FAILURE;
var checked = false;

下面是会员的配置。

<add name="AspNetSqlMembershipProvider" 
          type="System.Web.Security.SqlMembershipProvider" 
          connectionStringName="SiteSqlServer" 
          enablePasswordRetrieval="false" 
          enablePasswordReset="true" 
          requiresQuestionAndAnswer="false" 
          minRequiredPasswordLength="7" 
          minRequiredNonalphanumericCharacters="0" 
          requiresUniqueEmail="false" 
          passwordFormat="Hashed" 
          applicationName="DotNetNuke" 
          description="Stores and retrieves membership data from the local Microsoft SQL Server database"/>

这里有任何帮助。我检查了下面提到的链接,它具有相同的核心问题,但没有从那里的建议中得到任何解决方案。

以编程方式登录 dotnetnuke

任何建议或帮助将不胜感激。

谢谢,山姆

4

1 回答 1

1

这是我在身份验证提供程序中所做的:

var loginStatus = UserLoginStatus.LOGIN_FAILURE;
UserInfo user = UserController.ValidateUser(portalId, userName, password, string.Empty, string.Empty, Request.UserHostAddress.ToString(), ref loginStatus);

bool authenticated = (loginStatus == UserLoginStatus.LOGIN_SUCCESS || loginStatus == UserLoginStatus.LOGIN_SUPERUSER);
var eventArgs = new UserAuthenticatedEventArgs(user, user.Username, loginStatus, "DNN");
eventArgs.Authenticated = authenticated;
OnUserAuthenticated(eventArgs);
于 2014-11-12T23:42:31.283 回答