Предложение по использованию GUID

Я создаю образовательный сайт, где:

  1. Студент (назову его / ее пользователем) идет в «образовательный центр», затем платит деньги за «Код попытки» (от 5 до 8 цифр «Уникальный»)
  2. Пользователь открывает веб-сайт, а затем вводит «Код попытки», чтобы получить «Попытку создания кода».
  3. Затем пользователь может создать «Код» (от 13 до 15 цифр «Уникальный») для просмотра материалов определенного сеанса (в основном видео). на неделю

До сих пор все работает нормально, но после того, как он вводит «Код» для просмотра материала, и это правильно, Пользователь перенаправляется на следующую ссылку: {example.com/student/viewmaterial/12}, которую я хочу изменить, потому что если он поделился такой ссылкой или даже открыл ее через неделю она не должна открываться.

Поэтому я подумал об использовании GUID следующим образом:

Сначала я создал в своей базе данных таблицу со следующими столбцами

  • student_id (уникальный для каждого студента)
  • material_id (те 12, которые были показаны в ссылке и уникальны для каждого материала)
  • GUID (который заменит (12) в ссылке
  • valid_till (дата, до которой будет действителен GUID)

Во-вторых, каждый раз, когда пользователь вводит код, и это правильно, я вставляю (или обновляю) запись в таблицу с новым GUID, используя Guid.new (), как показано ниже.

string Newguid = Guid.NewGuid().ToString('N');
sql.AddMaterialGUID(studentid , materialid , Newguid , DateTime.UtcNow.AddDays(1));
return RedirectToAction("ViewMaterial", new { id = Newguid });

который перенаправит его на ссылку: {example.com/student/viewmaterial/guidhere}

В-третьих, каждый раз, когда кто-то открывает ссылку выше, я проверяю, что

  • Руководство все еще действует (я прошу его ввести код еще раз, если нет)
  • Student_id одинаков для этого пользователя (я прошу его ввести свой код, если нет)

Таким образом, я могу полностью контролировать доступ к этому материалу, НО это способ использования GUID? Есть другой способ сделать? Я что-то упустил?

Извините за длинный вопрос, я просто хочу описать ситуацию полностью, насколько могу.

0

Добавить комментарий

Ваш адрес email не будет опубликован.