CodeIgniter / Ajax - Перенаправление - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть простая форма входа в систему с CodeIgniter и jQuery. У меня есть пара вопросов, касающихся перенаправлений и лучших практик. Вот мой код вызова Ajax:

    $(document).ready(function(){
    $("#btnLogin").click(function(e)    {
        $("p.error").hide();
        var email = $("#email").val();
        var password = $("#password").val();
        $(".loader").show();
        $.ajax({
            type: "POST",
            url: "/login/go",
            data: ({email: email, password: password}),
            success: function(data){
                $(".loader").hide();
                if(!data['status'])
                {
                    $("p.error").html(data['error']);
                    $("p.error").slideDown("fast");
                }
                else
                {
                    window.location = "site/index";
                }
            }
        });

        e.preventDefault();
    });
});

Как видите, я возвращаю истину или ложь с моего контроллера (в данных ['status']) и иду вперед от этого. Однако я не уверен, является ли window.location = "" правильным способом сделать это. С точки зрения безопасности, можно ли разместить этот URL там? Люди не могут получить доступ к сайту / индексу без входа в систему. Правильный вход в систему устанавливает для этого CI-сеанс и проверки сайта / индекса. Если кто-то не вошел в систему, они будут перенаправлены на страницу входа. Я просто чувствую себя немного странно, имея этот URL в моем вызове ajax, хаха: (

Я попытался решить эту проблему, просто установив redirect("site/index") в моем контроллере после настройки сеанса. Некоторый код, так что это имеет смысл:

    if ($this->form_validation->run() == FALSE)
    {
        // validation failed, returns false
    }
    else
    { 
                    // successful
                    // sets session and then i tried doing:
                    redirect("site/index");
    }

Однако это не работает. Я не очень понимаю, почему это не работает, поэтому, если кто-то может объяснить, я был бы очень благодарен. Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 16 апреля 2011

Что касается первой части вашего вопроса:
Вы всегда можете поместить data['my_redirect']='site/index' в контроллер и вернуть его с помощью data['status'], чтобы структура вашего сайта не была «открыта» для просмотра другими.

Что касается второй части :
Это не работает, потому что у вас есть запрос Ajax, и вы не можете выполнить перенаправление на сервер, прежде чем вернуть данные в JavaScript, который сделал этот запрос.

2 голосов
/ 17 мая 2011

кабаре - не уверен, что у вас все еще есть эта проблема, но когда я искал ее, я нашел ее, а затем в конце концов нашел подходящее решение, поэтому я решил опубликовать ссылку на то, что я сделал.я разместил код и объяснение на форумах CI:

http://codeigniter.com/forums/viewthread/65486/

надеюсь, что это поможет

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