2016-12-21 2 views
1

Я использовал код ниже для входа на мой сайт asp.net. с каркасом 4 он работает успешно в веб-лук, но не работал на сафари (iphone, ipad) только когда я нажимаю кнопку входа в систему, он обновляет страницу, а не логин.C# Код входа не работает на сафари

Session["AdminID"] = DT.Rows[0]["Id"].ToString(); 
Response.Cookies.Add(new HttpCookie("SuperAccountId", DT.Rows[0]["Id"].ToString())); 
Response.Cookies["SuperAccountId"].Expires = System.DateTime.Now.AddDays(1); 

Response.Cookies.Add(new HttpCookie("SuperAccountName", DT.Rows[0]["Username"].ToString())); 
Response.Cookies["SuperAccountName"].Expires = System.DateTime.Now.AddDays(1); 
FormsAuthentication.SetAuthCookie(Session["AdminID"].ToString(), true); 
FormsAuthentication.RedirectFromLoginPage("admin", true); 

//create a cookie 
HttpCookie myCookie = new HttpCookie("FirstLoginCookies"); 

//Add key-values in the cookie 
myCookie.Values.Add("first", "1"); 

//set cookie expiry date-time. Made it to last for next 12 hours. 
myCookie.Expires = DateTime.Now.AddHours(12); 

//Most important, write the cookie to client. 
Response.Cookies.Add(myCookie); 

if (Request.QueryString["ReturnUrl"] != null) 
{ 
    string redirectURL = Request.QueryString["ReturnUrl"].ToString(); 
    Response.Redirect("~" + redirectURL); 
} 
else 
{ 
    Response.Redirect("~/admin"); 
} 
+0

Я думаю, что куки-файлы по умолчанию отключены в браузерах сафари – Sameer

+0

Я пытаюсь сделать его доступным для всего веб-сайта, но проблема все равно такая же: – user1851825

+0

Сначала вы должны проверить, включены ли файлы cookie, кроме как пытаться установить файлы cookie .. или иначе используйте другой подход. Попробуйте использовать локальный хостинг браузеров. поддержка большинства современных браузеров – Sameer

ответ

1

Убедитесь, что у вас нет ошибки на главной странице. (Если вы используете главную страницу) Затем попробуйте изменить последнюю часть вашего кода, как показано ниже:

   if (Request.QueryString["ReturnUrl"] != null) 
       { 
        string redirectURL = Request.QueryString["ReturnUrl"].ToString(); 
        Response.Redirect("~" + redirectURL, false); 

       } 
       else 
       { 
        Response.Redirect("~/admin", false); 
       } 

Установив второй параметр Response.Redirect в «ложь» оригинальную страницу вона 't быть отправлен обратно в браузер, и вы должны быть перенаправлены на новую страницу.

0

Сначала проверьте, что cookie установлен в заголовках ответов.

Затем проверьте, что файл cookie включен в следующий запрос, сделанный браузером.

Затем проверьте детали файла cookie - аутентификация должна быть только HTTP и защищена. Проверьте путь к файлу cookie, поскольку они выглядят нечувствительными к регистру в .NET и в URL-адресах страниц, но на самом деле они чувствительны к регистру. Конфигурация для cookie, установленная FormsAuthentication.SetAuthCookie, находится в вашем web.config.

Попробуйте использовать меньшее количество куки-файлов, особенно на мобильных устройствах - они включены в каждый последующий запрос, поэтому добавьте свой вид налога на пропускную способность на каждую страницу. Это стоит для файла cookie для проверки подлинности, но остальные лучше хранить на сессиях на стороне сервера или на стороне клиента (в локальном хранилище или индексированном DB, оба из которых поддерживают Mobile Safari).

Смежные вопросы