Неправильные пользователи, входящие в систему. Услуги Memership.asp.net - PullRequest
4 голосов
/ 16 февраля 2011

У меня есть страница по умолчанию, которая имеет контроль входа, эта страница находится в главном каталоге.Затем у меня есть несколько страниц, которые я хочу видеть только тем, кто вошел в каталог «MemberPages».Моя проблема в том, что когда я нажимаю кнопку входа в систему на странице по умолчанию, используя имя пользователя и пароль, которого нет в БД, он все равно переносит меня на все мои страницы участника

Я прошел через конфигурацию asp.net иустановите в директории «MemberPages» запрет на всех неавторизованных пользователей. Но он по-прежнему содержит блеклый, унаследованный от основного, который позволяет все и не может быть изменен (возможно, в этом проблема?Спасибо

Вот мой web.config из каталога MemberPages.

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

Вот мой основной web.config.

<configuration>

  <connectionStrings>
    <add name="LoginSQL" providerName="System.Data.SqlClient"
         connectionString="Data Source=xx.xx.xx.xx;Initial Catalog=xxxx;UID=xxxxxxx ;pwd=xxxxx;"/>
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0"/>

    <authentication mode="Forms">
      <forms name="Login" loginUrl="Default.aspx" timeout="20" />
    </authentication>


    <membership>
      <providers>
        <add connectionStringName="LoginSQL" applicationName="Login"
          enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true"
          requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="3"
          passwordAttemptWindow="30" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
          name="MySqlLoginProvider" type="System.Web.Security.SqlMembershipProvider" />
      </providers>
    </membership>


    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>

    <roleManager cacheRolesInCookie="true" cookieName=".ASPRoles"
      cookieTimeout="60">
      <providers>
        <add connectionStringName="LoginSQL" applicationName="Login"
          name="MyRoleProvider" type="System.Web.Security.SqlRoleProvider" />
      </providers>
    </roleManager>

  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Ответы [ 2 ]

1 голос
/ 26 марта 2011

«Моя проблема в том, что, когда я нажимаю кнопку входа на странице по умолчанию, используя имя пользователя и пароль, которого нет в БД, он все равно переносит меня на все мои страницы участника». Из приведенного выше утверждения ясно, что вы неправильно проверяете логины пользователей . Если пользователь / пароль не существует, ваш код вообще не должен перенаправлять пользователя со страницы входа.

Проверьте ваш код в обработчике событий клика входа в систему. У вас должно быть что-то вроде этого:

protected void btnLogin_Click(object sender, EventArgs e)
{
    if (Membership.ValidateUser(txtUserName.Text, txtPassword.Text))
    {
        FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true);
    }
    else
    {
        txtLoginFailedMsg.Text = "Login failed. Please check your user name and password and try again.";
    }
}
0 голосов
/ 18 февраля 2011

Я не уверен, работает ли это, но в моем коде это выглядит так:

<location path="~path\LoginPage">  
 <system.web>
  <authorization>
   <allow roles="*"/>  
  </authorization>  
 </system.web>    
</location>  
<location path="~\path\MemberPages">  
 <system.web>
  <authorization>  
   <allow roles="auth user"/>  
   <deny users="*"/>  
  </authorization>  
 </system.web>    
</location>  

Таким образом, каждый может получить доступ к loginPage, но только пользователям с ролями "auth users" для получить доступ к страницам в MemberPages
Я устанавливаю роли пользователя в файле Roles.vb в папке App_code.

Надеюсь, это поможет.

...