Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generate temporary URL to reset password

I am looking to implement a Forgot Password feature on my website. I like the option where an email containing a temporary one-time use URL that expires after some time is sent to the user.

I have looked at the following pages to get these ideas but I am not sure how to implement this using ASP.NET and C#. As one of the users indicated, if I can implement this without storing this information inside the database, that will be ideal. Please advise.

Password reset by emailing temporary passwords

Thanks.

like image 634
Pratik Kothari Avatar asked Dec 31 '09 15:12

Pratik Kothari


People also ask

How do I create a password reset URL in WordPress?

If you have access to your site and just want to change your WordPress password, you can do it in the Profile screen. In WordPress, go to Users > Your Profile to access your profile screen. Scroll down to the Account Management section at the bottom of the screen. Click the Generate Password button.

How long is a password reset link valid?

A good password reset link should last for 1 hour at most, this gives enough time for users with different browsers or devices to be able to access it. However, there are some instances when it may be beneficial to have a link that lasts longer or shorter than an hour.

How can I get my email password if I forgot it?

Dear Sir / Madam, This is to inform you that I have no access to login account for office portal/app (Mention your case here). Provided login id and password is not working, and it shows incorrect password. I am attaching copy of ID proof for your kind reference.


1 Answers

Probably the easiest way is going to be to modify your users table to add 2 extra columns, OR if you don't want to modify the existing table you could add a new dependent table called "UserPasswordReset" or something like that. The columns are like this:

PasswordResetToken UNIQUEIDENTIFIER, PasswordResetExpiration DATETIME 

If you go with the additional table route, you could do also add the UserID column, make it a primary key and a foriegn key reference back to your users table. A UNIQUE constraint would also be recommended. Then you simply use a Guid in your asp.net application as the token.

The flow could be something like this:

  1. User requests password reset for their account
  2. You insert a new record in the table (or update their user record) by setting the PasswordResetExpiration to a date in the future (DateTime.Now.AddDays(1)), and set the token to Guid.NewGuid()
  3. Email the user a link to your ResetPassword.aspx page with the guid in the query string (http://www.yoursite.com/ResetPassword.aspx?token=Guid-here)
  4. Use the ResetPassword.aspx page to validate the token and expiration fields. (I.E. Make sure DateTime.Now < PasswordResetExpiration)
  5. Provide a simple form that allows the user to reset this password.

I know you wanted to avoid modifying the database, but it really is probably the simplest method.

like image 68
Scott Anderson Avatar answered Sep 16 '22 17:09

Scott Anderson