Проблема с Управлением входом в систему ASP.NET

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
6
задан Biri 16 September 2008 в 06:52
поделиться

11 ответов

Я проверил код в файлах, которые Вы отправили мне (еще раз спасибо за отправку их через).

Примечание: Я не протестировал это, так как я не установил базу данных и т.д.

Однако я вполне уверен, это - проблема.

Необходимо установить Свойство MembershipProvider для средств управления ASP.NET. Создание определений для них:

<asp:Login ID="Login1" runat="server" 
    MembershipProvider="MySqlMembershipProvider">
    <LayoutTemplate>
        <!-- template code snipped for brevity -->
    </LayoutTemplate>
</asp:Login>

И..

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" 
    MembershipProvider="MySqlMembershipProvider">
        <WizardSteps>
            <asp:CreateUserWizardStep runat="server" />
            <asp:CompleteWizardStep runat="server" />
        </WizardSteps>
    </asp:CreateUserWizard>

Это затем связывает средства управления с Поставщиком Членства с именем (который Вы указали в сети. Конфигурация.

Дайте этому водоворот в своем решении и сообщите мне, как Вы преуспеваете. Я надеюсь, что это работает на Вас :)

Править

Я должен также добавить, я знаю, что Вы не должны должны быть делать это, поскольку поставщик по умолчанию установлен, но у меня были проблемы в прошлом с этим.. Я закончил тем, что установил их всех на руководство, и все хорошо работали.

5
ответ дан 8 December 2019 в 14:49
поделиться

Какова роль имени пользователя, с которым Вы входите в систему? Вы разрешили эту роль к доступу Default.aspx?

Я испытал это однажды (давным-давно) и пошел "doh!" когда я понял, что даже администраторские роли не могут получить доступ к основной папке!

1
ответ дан 8 December 2019 в 14:49
поделиться

У Вас обычно есть начальная папка с обычно доступными формами, и отдельная папка со всем входом в систему защитила объекты. В начальной папке у Вас есть webconfig с:

   <!--Deny all users -->
   <authorization>
     <deny users="*" />
   </authorization>

В другой папке можно поместить отдельный webconfig с настройками как:

   <!--Deny all users unless autherticated -->
   <authorization>
     <deny users="?" />
   </authorization>

Если Вы хотите далее совершенствовать его, можно предоставить доступ к конкретной роли только.

<configuration>
   <system.web>
      <authorization>
         <allow roles="Admins"/>
         <deny users="*"/>
      </authorization>
   </system.web>
</configuration>

Это запретит доступа любому, у кого нет роли администратора, которого они могут только получить, если они зарегистрированы успешно.

Если Вы хотите некоторый хороший фон, я рекомендую телевизионный эпизод DNR с Miguel Castro на Членстве ASP.NET

2
ответ дан 8 December 2019 в 14:49
поделиться

РЕ: принятый ответ

Мне не нравится данный взлом.

У меня есть сайт, который использует форму входа в систему, названную "login.aspx", и все хорошо работает. Я думаю, что мы должны на самом деле найти ответ, а не взлом. Начиная со всей [по-видимому], протестированной работы сайтов. Разве Вы не думаете, что мы должны на самом деле использовать StackOverflow для нахождения ФАКТИЧЕСКОЙ проблемы? (создание его намного более полезный, чем где-нибудь еще?)

В LoginCtl_Authenticate событие Вы устанавливающий EventArgs. Аутентифицируемое свойство к истинному?

например.

protected void LoginCtl_Authenticate(object sender, AuthenticateEventArgs e)
{
   // Check the Credentials against DB
   bool authed = DAL.Authenticate(user, pass);
   e.Authenticated = authed;
}
6
ответ дан 8 December 2019 в 14:49
поделиться

Я столкнулся с подобной проблемой только что, и я помню, что она была решена, не назвав страницу входа в систему "login.aspx". Просто назвав его что-то еще (userLogin.aspx, например) решило его для меня.

1
ответ дан 8 December 2019 в 14:49
поделиться

Вы проверили, что путь перенаправления отправляется в форму входа в систему? От моей головы я думаю, что это - ReturnURL?

0
ответ дан 8 December 2019 в 14:49
поделиться

@Jon: я еще не использую роли. Если я проверяю веб-Административное средство, оно говорит: Роли не включены.

@Rob: Да, это там.

Я также проверил события в порядок: LoggingIn, Пройдите проверку подлинности, LoggedIn, таким образом, он следует за корректным путем, но никакое перенаправление и он не видят, что он аутентифицировался.

0
ответ дан 8 December 2019 в 14:49
поделиться

Вы имеете requireSSL="true" в Вашем web.config? У меня были подобные признаки Вам. При установке requireSSL на истинный существуют некоторые дополнительные соображения.

0
ответ дан 8 December 2019 в 14:49
поделиться

@Rob: Вы правы со своей точки зрения.

С моей точки зрения это - мой тестовый проект проверить некоторые вещи. Если это работает всегда, который соответствует мне. Я не нашел подобной проблемы в сети, таким образом, это может быть что-то еще, абсолютно не связанное с ASP.NET.

Однако я открыт, так, чтобы в следующий раз я также мог сказать: ага, я знаю это!

Я запустил по проекту:

Default.aspx: добавленные средства управления LoginStatus и LoginName

Login.aspx: добавленное управление Управлением входом в систему и CreateUserWizard

web.config: добавленный

<authentication mode="Forms">
    <forms name="SqlAuthCookie" timeout="10" loginUrl="Login.aspx"/>
</authentication>
<authorization>
    <deny users="?"/>
    <allow users="*"/>
</authorization>
<membership defaultProvider="MySqlMembershipProvider">
    <providers>
        <clear/>
        <add name="MySqlMembershipProvider" connectionStringName="MyLocalSQLServer" applicationName="MyAppName" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </providers>
</membership>

и

<connectionStrings>
    <add name="MyLocalSQLServer" connectionString="Initial Catalog=aspnetdb;data source=iballanb\sqlexpress;uid=full;pwd=full;"/>
</connectionStrings>

Создайте базу данных с aspnet_regsql -E -S iballanb\sqlexpress -A all, созданный пользователь SQL, названный полным полного пароля.

Запустите проект, я был перенаправлен к Login.aspx, создайте одного пользователя, он создается в базе данных. Ввод пользовательских данных для входа в систему в форму, ловля событий: LoggingIn, Пройдите проверку подлинности, LoggedIn, таким образом, я зарегистрирован (я ничего не делаю в этих событиях, я не аутентифицирую меня, я только интересуюсь тем, что запущено и который порядок). RedirectURL правильно указывает на Default.aspx, но не имеет никакого эффекта.

Это - это до сих пор.

0
ответ дан 8 December 2019 в 14:49
поделиться

При переопределении событий Вы называете реализацию по умолчанию? Если Вы переопределите их для подтверждения их выполнения, то фактический код не будет становиться выполняемым также, который может быть перерывом в инфраструктуре..

0
ответ дан 8 December 2019 в 14:49
поделиться

Я только что решил эту проблему. Проверьте applicationName для своего поставщика услуг членства. http://weblogs.asp.net/scottgu/archive/2006/04/22/Always-set-the-_2200_applicationName_2200_-property-when-configuring-ASP.NET-2.0-Membership-and-other-Providers .aspx

1
ответ дан 8 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: