I don't know if this is recommended, but you can create a separate table as you mentioned, and then implement your own membership provider. Thus, with the reset password, you can implement the required additional functionality.
For the second part: I would generate a token, read about the different ways of creating it here . You can save the token with the date / time, send a link to the user with the token as part of the URL, then you can check it for the elapsed time as soon as users click on it.
source share