time-based temporary authentication
In Drupal 7 you can do something like the following:

Set user_password_reset_timeout variable (i.e. in settings.php
i.e. in settings.php:

$conf['user_password_reset_timeout'] = '600000';


Then it will use this time after password generation link, when this much time elapsed the link will be invalidated.

You can follow the thread here