Аутентификация с помощью форм не аутентифицируется

Я установил следующие формы аутентификации на основе того, что я понял из комплекта самостоятельного обучения MCTS для экзамена MCTS 70-562, но аутентификация не выполняется ...

    <authentication mode="Forms">
        <forms name="ortund" loginUrl="~/Login.aspx" timeout="30" slidingExpiration="true" />
    </authentication>
</system.web>

<location path="Members">
    <system.web>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
</location>

По сути, он должен разрешить неаутентифицированным пользователям доступ ко всем областям сайта, кроме ~/Members/, а также ко всем файлам и папкам внутри них.

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

Вот код для входа:

Protected Sub lnkLogin_Click(sender As Object, e As System.EventArgs) Handles lnkLogin.Click
    Dim db As New Database

    ' gets data from the database with the supplied credentials
    ' if true, the user exists, proceed to log in
    If db.Login(txtEmail.Text, txtPassword.Text, "ortund") Then
        FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, True)

        If Not String.IsNullOrEmpty(Request.Params("ReturnUrl")) Then
            Response.Redirect(Request.Params("ReturnUrl"))
        Else
            Response.Redirect("~/Members/Default.aspx")
            'Response.Redirect("~/AboutUs.aspx")
        End If
    Else
        lblerr.Text = "Invalid username or password"
    End If
End Sub

И Page_Load для членов / Default.aspx:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        If Context.User.Identity.IsAuthenticated Then
            loadUserPage()
        End If
    End If
End Sub

person Ortund    schedule 27.05.2013    source источник
comment
Насколько я понимаю, это должно работать, позволяя 30-минутному таймауту, который сбрасывается, когда пользователь выполняет действие ...   -  person Ortund    schedule 27.05.2013


Ответы (1)


Ааааи после 2 сводящих с ума часов оглушительно сладких вещей в SO, IRC, Facebook и Skype ... Вот как я это исправил:

Я создал тестовое приложение, чтобы убедиться, что у меня правильная концепция. Тест отличался от описанного выше только тем, что он использовал учетные данные, указанные в файле web.config для входа в систему, тогда как фактический проект запрашивал учетные данные пользователя в базе данных.

Вы можете загрузить мой тестовый код здесь (он использует .NET 4, но вы можете применить те же элементы аутентификации в файле web.config и к более ранней структуре).

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

Решение
Исправить в этом случае было просто. Я удалил виртуальное приложение из IIS и воссоздал его с помощью .NET 4.0 Classic AppPool.

person Ortund    schedule 27.05.2013