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