Como funciona um sistema de login?

Estou trabalhando no meu TCC, e estou desenvolvendo um aplciativos para gerenciar bibliotecas escolares, estou utilizando Ruby on Rails e SQlite3

Eu tentei fazer o meu próprio, e até que funcionou, mas tem uma falha de segurança desgraçadamente perigosa.

Olha só, funciona assim:

Cadastro:
  1. Usuário se cadastra com um formulário com os seguintes campos:

Nome; Sobrenome; Apelido; Email; Email de recuperação; Senha; Confirmação de senha; Foto de perfil; Biografia;

  1. Verifica-se os dados para saber se a senha, e a verificação da senha estão iguais.
  2. Cria-se a hash da senha.
  3. O usuário é criado no banco de dados.
  4. O usuário é redirecionado para a pagina inicial, onde pode fazer o login.
Login:
  1. O usuário preenche seus dados de login, como email e senha.
  2. Caso estejam corretos, criamos um cookie, contendo o id do usuário cadastrado no banco de dados
  3. O Usuário é redirecionado para a pagina inicial, onde agora, ao invés de links para as paginas de cadastro e login, temos um link para a pagina do usuário, e um botão de sair OBS. o link para a pagina de usuário tem como base o id cadastrado no cookie, onde usamos esse valor para fazer a busca no banco, e colocar o href do link com: '/usuario/<apelido do usuario>'
Problema:

Caso algum espertinho abra a dev-tools e mude o valor do id, para qualquer outro número, ele vai entrar na conta dele, sem ter que por o email e senha para fazer login. E não duvido que tenha muitos outros problemas com esse método que eu usei.

O que eu deveria fazer para resolver isso? dês de já agradeço :)

Você tem que usar token, sugiro o JWT.

Tô dando uma olhada, valeu :)