После выполнения Membership.ValidateUser роли и пользовательские роли очищаются и ничего не возвращает. - PullRequest
1 голос
/ 23 июня 2011

У меня странная проблема.Я использую c # asp.net с аутентификацией форм с Mysql .На веб-сайте есть 2 папки, включая root, «Пользователь» и «Администратор».

Я создал тестового пользователя с помощью инструмента настройки asp net и правильно настроил разрешения для папок.

Я использую элемент управления Login с пользовательским кодом в событии authenticate.

    protected void Login1_Authenticate1(object sender, AuthenticateEventArgs e)
    {
        if (Membership.ValidateUser(Login1.UserName, Login1.Password))
        {
            e.Authenticated = true;
        }
        else
        {
            e.Authenticated = false;
        }
    }

Как только функция Membership.ValidateUser выполняет все роли очищаются и ничего не назначается вошедшему в систему пользователю (хотяпользователь успешно входит в систему)

Я настроил часы и точку останова перед Membership.ValidateUser.

Перед запуском ValidateUser:

    Roles.GetAllRoles() {string[2]} string[]

После запуска ValidateUser:

    Roles.GetAllRoles() {string[0]} string[]

Пользователь успешно вошел в системуно не может получить доступ ни к одной папке (пользователь имеет доступ к обеим ролям, что подтверждается просмотром в базе данных)

Я также заметил, что если я изменю файл web.config после того, как пользователь вошел в системуи сохраните его (пока веб-сайт все еще работает), затем все роли снова заполняются, и пользователь может

Вот корневой файл web.config:

    <?xml version="1.0"?>
    <configuration>
        <connectionStrings>
            <add name="MySqlMembershipConnection" connectionString="Data Source=XXXX;user id=XXXX;password=XXXX;database=XXXX;" providerName="MySql.Data.MySqlClient"/>
        </connectionStrings>
        <system.web>
        <authentication mode="Forms">
           <forms loginUrl="~/Login.aspx" defaultUrl="~/Default.aspx" timeout="15"
              cookieless="UseCookies" />
        </authentication>

            <membership defaultProvider="MySqlMembershipProvider" userIsOnlineTimeWindow="15">
                <providers>
                    <clear/> 
                    <add name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, mysql.web" connectionStringName="MySqlMembershipConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" autogenerateschema="true"/>
                </providers>
            </membership>

          <roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="MySqlRoleProvider" cookieName=".ASPXROLES" cookiePath="/" cookieTimeout="15" cookieRequireSSL="false" cookieSlidingExpiration="true" createPersistentCookie="false" cookieProtection="All">
                <providers>
                    <clear/>
                    <add connectionStringName="MySqlMembershipConnection" applicationName="/" name="MySqlRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, mysql.web" autogenerateschema="true"/>
                </providers>
            </roleManager>

            <profile enabled="true" defaultProvider="MySqlRoleProvider">
                <providers>
                    <clear/>
                    <add type="MySql.Web.Security.MySqlProfileProvider, mysql.web" name="MySqlProfileProvider" applicationName="/" connectionStringName="MySqlMembershipConnection" autogenerateschema="true"/>
                </providers>
            </profile>
            <compilation debug="true"/></system.web>
        <system.webServer>
        <validation validateIntegratedModeConfiguration="false"></validation>
      </system.webServer>
    </configuration>

Папка администратора web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin" />
        <deny users="*" />
    </authorization>
</system.web>

Папка пользователя web.config:

<?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.web>
        <authorization>
        <allow roles="User" />
        <allow roles="Admin" />
        <deny users="*" />
        </authorization>
        </system.web>
</configuration>

Пожалуйста, кто-то может указать мне направление, это больше похоже на ошибку, чем на ошибку программирования, но я хотел бы услышать ваши возможные решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...