To avoid having the user to login every time his session expires, I want to implement a token based authentication system.
My scheme works like this:
- Send the user login (send name + password) via
$.ajax()
to ahttps
URI - Create a token via
$token = bin2hex(openssl_random_pseudo_bytes(16));
- Save
$token
,userid
and date in a database (only accessible by SSL) - Echo the
$token
anduserid
to the client - Save the
$token
anduserid
in html localStorage on the client - When doing an
$.ajax()
from client always senduserid
and$token
as POST - Serverside, match the provided
$token
and see if it is still valid (date not expired). - If it's alright, continue to deliver the requested material
Can you analyze my scheme?
Many people advise against implementing custom authentication processes, as they are often vulnerable to attacks. This makes me suspect that my approach may also have flaws. Can you reveal these flaws to me?