Задать вопрос
  • Как сделать правильную авторизацию на Vue.js?

    @ShinShil
    В плане безопасности и токен, и куки равны. Под безопасностью имею ввиду сложность взлома.

    Можно выделить несколько основных отличий:
    1. Куки - хранятся на сервере и на клиенте, токен - хранится на клиенте
    2. Куки привязываются к домену, который авторизовался, а токен нет - это даёт большую гибкость, и она становится необходимостью при разработке распределённых систем.
    3. Токен можно использовать выборочно на запросах, а куки на всех запросах. В случае с куки, это может привести к XSRF атакам, т.к. после авторизации, все запросы будут считаться авторизованными. Например, ты авторизовался на сайте site.com, я отправил тебе письмо с таким тегом:
    <img src="https://site.com/money?money=200&to=me />
    . В результате мне перечислит 200 единиц, т.к. после авторизации с куки, все запросы считаются авторизованными и запрос https://site.com/money?money=200&to=me отработает. Способы защититься от таких атак существуют.

    В последние пару лет токены стали чаще использовать, по трём причинам:
    1. Они stateless, что больше соотвествуют SPA (angular, vue, react) - один из моментов SPA в том, что состояние клиента находится на клиенте.
    2. Гибкость, т.к. токены не привязаны к одному домену
    3. Они набрали популярность))

    За последние два года лично мне не попадалось проектов с куки-авторизацией, стек .net + angular/react

    https://dev.to/spukas/authentication-cookies-vs-to...
    https://stackoverflow.com/questions/17000835/token...
    https://www.linkedin.com/pulse/cookie-vs-token-aut...
    Ответ написан
    4 комментария
  • Нужно ли в данной ситуации разделить ответственность?

    @ShinShil
    Композиция. Крупные части выносим в файл. В классе их используем. Можно скинуть мне на почту starostin.450503@gmail.com код своего класса, подрефакторю с комментариями со своего опыта. Предполагаю, что вы используете react)
    Ответ написан
    Комментировать
  • Как извлечь данные из переменной, которая содержит в себе HTML?

    @ShinShil
    2 варианта
    1) вставить код в html страницу и получать всю необходимую информацию. Для это можно подготовить место для в html:
    <div id="for-insert" style="{height:0,overflow: hidden}" ></div>

    . Если внутрь вставить html, то его не будет видно,но его можно выбирать через javascript.

    2) Регулярки. Для ознакомления рекомендую приложение из play market: Hour of regex.

    3) Хороший вариант предложил Виктор в ответе ниже
    Ответ написан
  • Как правильно сделать парсер для сайта на JS/jQuery?

    @ShinShil
    Да, парсинг делают через бекенд. Я делал на php. Сначала получал страницу через CURL. Потом парсил с помощью simplehtldom - небольшая библиотека, очень удобная и простая.

    Немного о CURL. Это просто для того чтобы сделать запрос. Ты ведь с компьютера открваешь страницы. Это происходит так: твой компьютер с помощью браузера делает запрос к серверу, тот высылает тебе html код, а браузер просто отображает его.

    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, 'http://forum.antichat.ru/'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $result = curl_exec($ch); 
    curl_close($ch);


    Выше пример простейшего CURL, в если он подключён, то в $result должна находиться длиннющая строка с html кодом страницы. У него есть много настроек, можно устанавливать различные заголовки, типы запросов и т.п.

    При парсинге выбираешь все ссылки и потом проверяешь аттрибут href.
    Ответ написан
    Комментировать
  • Как написать условие для использование методов carousel Bootstrap?

    @ShinShil
    Пример кода стоит добавлять в вопрос. Рядом с вопросом в правом нижнем углу есть многоточие. Если на него нажать можно выбрать редактирование.

    Ответ: Bootstrap карусель имеет события, вот пример регистрации функций на события смены слайдов.
    $("#otzyv").on('slide.bs.carousel', function () {
              //вызывается перед сменой слайда
        });
        $("#otzyv").on('slid.bs.carousel', function () {
              //вызывается после смены слайда
        });


    Информация отсюда
    www.w3schools.com/bootstrap/bootstrap_ref_js_carou... здесь посмотрите Carousel Events
    www.w3schools.com/bootstrap/tryit.asp?filename=try...
    Ответ написан
    Комментировать
  • Как настроить JS clearInterval?

    @ShinShil
    Суть js. В js часто функции используются как параметры. Например, функция вызывающая две функции:

    function someFunc(argFunc1, argFunc2) {
         argFunc1();
         argFunc2();
         return 5; //эта функция возвращает число 5
    }
    
    func1() {
        console.log("FUNC 1");
    }
    
    
    func2() {
        console.log("FUNC 2");
    }
    
    Console.log(someFunc(func1, func2));


    Теперь посмотрим на setInterval(func, time). Здесь func - функция, time - время в мс. setInterval создаёт отдельный поток, который каждые time мс запускает на выполнение функцию func. Именно указатель этого потока возвращает функция setInterval.

    Поток с функцией не связан, он только запускает её на выполнение, поэтому Ваш код: clearInterval(go); не имеет смысла. Нужно остановить поток, а не функцию.

    var intervaID = setInterval(go, 1000); //в intervalID помещаем ID исполняющего потока
    var z = 0;
    function go() {
        if(z == 10) {
            clearInterval(intervalID); // останавливаем исполняющий поток
        }else {
            ++z;
        }
    }
    Ответ написан
    Комментировать
  • Как отправить значение в ajax при клике?

    @ShinShil
    0)Редактирую. Получение аттрибута var attrVal = $('#someId').attr("attrName")
    1)Если используете jquery, то используйте его полностью вместо
    document.getElementById(param) = response
    пишите это
    $('#'+param).html(response);

    2)Мне не совсем ясно о каких значениях attr идёт речь, но любые данные можно передать на сервера в параметре data. data параметр имеет формат json. Когда Вы сериализуете форму, то получаете строку такого вида {start: "val1", stop:"val2"}, где val1,val2 - это значение введённые в Input. Я не рекомендую пихать js код в html разметку. Строку с данными я бы формировал так:
    myData = {
    start: $('input[name="start"]).val(),
    stop: $('input[name="stop"]).val(),
    attr:"some attr"
    };

    Обратите внимание, что attr на php, например, будет доступен так $_POST["attr"]:
    echo $_POST["attr"] //выведет: some attr
    $('#formStart button[type="submit"]').click(function() { //или $('#formStart').onsubmit
    $.ajax({
        url: url,
        type: "POST",
        dataType: "html",
        data: myData,
        success: function(response) {
          document.getElementById(param).innerHTML = response;
        },
        error: function(response) {
          document.getElementById(param).innerHTML = "Ошибка";
        }
      });
    }

    3)Если хотите просто добавить какие аттрибуты в ваш вариант
    после serializearray допишите
    var data = $(form).serializeArray();
    data["attr"] = "some attr"; //это добавит поле attr со значением "some attr" в объект data, на php будет доступен как $_POST["attr"]

    4)Попробуйте чаще гуглить jquery, например, как отправить форму с jquery, как сделать анимацию c jquery и т.д.
    Ответ написан