rajin kp Ответов: 0

браузер запрашивает имя пользователя и пароль для сервера, когда пользователь не аутентифицирован, когда Http Post-запрос выполняется через $.ajax() из Jquery


у меня есть AJAX-запрос, чтобы загрузить питание выполнять при нажатии на Див позволяет назвать loadDiv
Проблема заключается в том, что когда аутентификация истекает и мы пытаемся получить доступ к веб-службе, браузер запрашивает окно сообщения с запросом учетных данных для сервера.
Или если я открою страницу aspx в двух вкладках, а затем выйдите из одной вкладки(это вызовет FormsAuthentication.SignOut()), затем я пытаюсь получить доступ к веб-сервису, нажав loadDiv in
вторая вкладка в браузере запрашивает то же самое поле для имени пользователя и пароля
.ie страница не перенаправляется на страницу входа в систему, как Get request done.
Я хочу, чтобы метод проверки того, истек ли срок действия раздела входа пользователя или нет, если истек срок действия перенаправления на страницу входа в систему
Способ Аякса
$.ajax({
            type: "POST",
            url: urlString,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: dateAndPatientID,
            success: function(response) {
                var jposts = response.d;
                var itemc = false;
                var calcc = 0;
                $.each(jposts, function(index, jpost) {
                 
                    //Some work
                });
                if (txt == "")
                    txt = "No items To display";
                $('#divfoodDetails' + id).append(txt);
            },
            failure: function(msg) {
                details = 'Cannot find Food Items';
            }
        });

и я использую проверку подлинности формы для своего приложения в веб-конфигурации
<system.web>
        <authentication mode="Forms">
            <forms loginUrl="Index.aspx" protection="All" name=".OTS"></forms>
        </authentication>
    </system.web>
    <location path="UserArea">
        <system.web>
            <authorization>
                <deny users="?"/>
            </authorization>
        </system.web>
    </location>

Метод входа в систему на странице входа содержит

string url = "UserArea/" + obj1.GetErrorURLForUserType().Substring(3);
                        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                                                                        1,
                                                                        nickname,
                                                                        DateTime.Now,
                                                                        DateTime.Now.AddMinutes(60),
                                                                        false,
                                                                        obj.UserID.ToString(),
                                                                        FormsAuthentication.FormsCookiePath);
                       
                        string enrypted = FormsAuthentication.Encrypt(ticket);
                        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, enrypted);
                        Response.Cookies.Add(cookie);
                        Session["SelectedMenuID"] = null;
                        string[] addressarray = url.Split('/');
                        Session["MenuString"] = addressarray[addressarray.Length - 1];
                        Response.Redirect(url, false);

я нашел этот вопрос и
webservice запрашивает имя пользователя и пароль для сервера вместо перенаправления на страницу входа в систему[^]
я хочу знать, есть ли какой-либо другой способ аутентифицировать запрос на веб-сервис PLZ help.или дать какую-то полезную ссылку

ZurdoDev

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

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

0 Ответов