Всем доброго времени суток! Недавно появилась необходимость написать простенький интернет-магазин. Ранее я не занимался бэкендом, поэтому почитав несколько статей решил написать серверную часть на Go. Но в процессе написания возникла следующая ситуация: на web-странице в топ баре есть ссылки "Регистрация" и "Вход", которые при входе пользователя в свой аккаунт должны меняться на логин пользователя, при нажатии на который происходит переход в профиль, и "Выход". Пока что мне удалось это реализовать с помощью javascript на фронтенде, а общение между фронтендом и бэкендом происходит с помощью cookie, в которую пишется id сессии и json файла, в котором находится информация о пользователе. Мне кажется, что такая конструкция не совсем безопасна, поэтому появилась идея перенести всю логику отрисовки на бэкенд. Но с помощью встроенного шаблонизатора у меня это сделать не удалось (но возможно я не все методы попробовал), и гугл по этому вопросу мне никак не помог.
Поэтому у меня возник вопрос - как в данной ситуации можно реализовать логику отрисовки только на Go и возможно ли это?
Но, как я понял, я не могу в данной ситуации передать никнейм пользователя в шаблон header и его права в index совместно с передаваемыми продуктами products.
Но я бы на вашем месте сделал из go части - rest service. Проблемы в общении фронтенда с бекендом нет, и это надуманная причина написать "все на go".
Замените cookie на auth token, а json файл - на базу данных, выполняйте авторизацию и выгружайте информацию о пользователе из базы, затем возвращайте фронту.
Ключик auth-token крепите к header любого запроса, и перед любым запросом проверяйте на стороне сервера, существует ли пользователь в базе и актуален ли его токен.
EnotWF, реализация схемы REST в go ничем не отличается от любого серверного языка.
Приходит http запрос, происходит авторизация по токену, который он принес. Если не брошена ошибка - запрос обрабатывается (из него забираются данные) и передаются в функцию, которая отвечает за получение данных. На основе полей http запроса строится SQL и уходит в базу. В ответе от базы приходят данные, они преобразуются в набор структур. Структуры вы кодируете в json и отправляете в ответ.
На фронте это будет выглядеть..ну, скажем..
$.ajax({
beforeSend: function(request) {
request.setRequestHeader("Authority", authorizationToken);
},
"url":"/user",
"method" : "GET",
"success" : function(resp) {
console.log(resp); //объект который вы закодируете в json
}
});