PDA

View Full Version : ایجاد پسورد برای کاربرانی که کلمه عبورشان را فراموش کردن



shahram176
جمعه 01 فروردین 1393, 07:21 صبح
با عرض سلام و تبریک سال نو
من تو پروژه ام کلمه عبور کاربران را رمز نگاری میکنم اگر کاربری پسوردش را فرموش کرد چطوری کلمه عبور براش ایجاد کنم و به صورت رمز شده در بانک ذخیره کنم و به کاربر هم بدم
دوستان من چون عنوانش را نمیدونستم تو تالار سرچ نکردم

setareh2013
جمعه 01 فروردین 1393, 10:51 صبح
من معمولا هنگام ثبت نام از کاربر آدرس ایمیل می گیرم که اگه رمزشو یادش رفت با کلیک روی دکمه ارسال رمز عبور ، رمز ریست بشه و یک رمز تصادفی ساخته بشه و هم به آدرس ایمیل اون شخص فرستاده بشه و هم در دیتابیس ، این رمز جدید ذخیره بشه .

shahram176
جمعه 01 فروردین 1393, 15:17 عصر
رمز تصادفی چطوری ساخته میشه؟

setareh2013
جمعه 01 فروردین 1393, 16:45 عصر
Random rnd = new Random();

mpass = (rnd.GetHashCode() % 100000).ToString();

Mohammad_dn
جمعه 01 فروردین 1393, 17:40 عصر
بله به نظر منم همینکارو بکنید بهتره...منم همینکارو میکنم

salmah
جمعه 01 فروردین 1393, 20:50 عصر
من معمولا هنگام ثبت نام از کاربر آدرس ایمیل می گیرم که اگه رمزشو یادش رفت با کلیک روی دکمه ارسال رمز عبور ، رمز ریست بشه و یک رمز تصادفی ساخته بشه و هم به آدرس ایمیل اون شخص فرستاده بشه و هم در دیتابیس ، این رمز جدید ذخیره بشه .
منم اینو احتیاج داشتم
اگه میشه درباره روش کاربیشترتوضیح بدید

Mohammad_dn
شنبه 02 فروردین 1393, 16:13 عصر
خیلی سادس
1:دریافت ایمیل از کاربر
2:برسی موجودیت ایمیل
3:ایجاد رمز عبور جدید
4:ذخیره ی رمز عبور جدید (بروز رسانی رکورد کاربر )
5:ارسال رمز عبور جدید به ایمیل کاربر

silverfox
شنبه 02 فروردین 1393, 23:15 عصر
می تونی از library آماده net. هم استفاده کنی تو system.web.security

public static string GeneratePassword(
int length,
int numberOfNonAlphanumericCharacters
)
مثلا
string password = Membership.GeneratePassword(12, 1);

می تونی طولش و اینکه علامت و اینا هم داشته باشه یا نه رو هم بهش بدی.
اینم توضیخش تو msdn (http://msdn.microsoft.com/en-us/library/system.web.security.membership.generatepassword.as px)

mRizvandi
یک شنبه 03 فروردین 1393, 01:33 صبح
از کامپوننت PasswordRecovery استفاده کنید، خودش همه این کارها رو انجام میده، شما فقط بندازینش روی صفحه!

shahram176
یک شنبه 03 فروردین 1393, 10:25 صبح
از کامپوننت PasswordRecovery استفاده کنید، خودش همه این کارها رو انجام میده، شما فقط بندازینش روی صفحه!
دوست عزیز اگه امکانش هست این کامپوننت و طرز استفاده از آن را قرار بدید

mRizvandi
یک شنبه 03 فروردین 1393, 13:03 عصر
PasswordRecovery یکی از کامپوننتهای ASP.NET هست.
از جعبه ابزار بخش Login می تونید کامپوننت رو به صفحه اضافه کنید

یک سری از فیلدها رو هم می تونید مطابق پروژه و صفحه تون تنظیم کنید. من یک مثال میذارم:

کامپوننت بازیابی کلمه عبور:

<asp:PasswordRecovery ID="PasswordRecovery1" runat="server"></asp:PasswordRecovery>

این کامپوننت با ممبرشیپ ASP.NET کار میکنه، پس اگر مدیریت کاربران رو خودتون دوباره پیاده سازی کردید که باید یکی مثل این بسازی :)
برای اینکه ایمیل تغییر پسورد برای کاربر ارسال بشه باید ایمیل رو در وب کانفیگ ست کرده باشید، مثال:
تنطیمات ایمیل در وب کانفیگ

<system.net>
<mailSettings>
<smtp from="id@mydomain.com (from=id@mydomain.com)">
<network host="mail.mydomain.com" userName="id@mydomain.com (from=id@mydomain.com)" password="myemailpassword" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>

حالا یکسری خصوصیات از کامپوننت PasswordRepvery
MailDefinition:
تنظیم خصوصیات مربوط به ایمیلی که برای کاربر ارسال می شود، مثل عنوان و ...
تمامی متنهایی که توسط این کامپوننت دیده میشوند رو می تونید فارسی کنید.
به ازای هر متن یک خصوصیت هست، مثل:

AnswerLabelText="پاسخ"
AnswerRequiredErrorMessage="پاسخ اجباری است"
GeneralFailureText="خطای ناشناخته"
QuestionFailureText="پاسخ به سوال امنیتی صحیح نیست"
QuestionInstructionText="پاسخ این سوال را بنویسید"
QuestionLabelText="سوال"

...
فرمت یا قالب کلی هم قابل انتخاب هست، هر جایی هم که احساس می کنید نمی تونید فرمت دلخواه خودتون رو بسازید، کافی است اون رو به تمپلت تبدیل کنید و حالا دستتون بازه برای هر کاری
حالا کدهای ASPX شما به این تبدیل شده:


<asp:PasswordRecovery ID="PasswordRecovery1" runat="server"
AnswerLabelText="پاسخ"
AnswerRequiredErrorMessage="پاسخ اجباری است"
GeneralFailureText="خطای ناشناخته"
QuestionFailureText="پاسخ به سوال امنیتی صحیح نیست"
QuestionInstructionText="پاسخ این سوال را بنویسید"
QuestionLabelText="سوال">
<UserNameTemplate>
<table cellpadding="1" cellspacing="0" style="border-collapse:collapse;">
<tr>
<td>
<table cellpadding="0">
<tr>
<td align="center" colspan="2">کلمه عبور خود را فراموش کرده اید؟</td>
</tr>
<tr>
<td align="center" colspan="2">Enter your User Name to receive your password.</td>
</tr>
<tr>
<td align="right">
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label>
</td>
<td>
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server"
ControlToValidate="UserName" ErrorMessage="User Name is required."
ToolTip="User Name is required." ValidationGroup="PasswordRecovery1">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="center" colspan="2" style="color:Red;">
<asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal>
</td>
</tr>
<tr>
<td align="right" colspan="2">
<asp:Button ID="SubmitButton" runat="server" CommandName="Submit" Text="Submit"
ValidationGroup="PasswordRecovery1" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</UserNameTemplate>
</asp:PasswordRecovery>
میتونید صفحه نمایش پیغام موفقیت آمیز بودن رو هم تنظیم کنید.
نکته آخر: تمامی این کارها بدون نیاز به کد نویسی انجام میشه. و شما فقط اون رو مطابق تم پروژه خودتون تنظیم می کنید.

mRizvandi
یک شنبه 03 فروردین 1393, 13:22 عصر
کامپوننتهای مربوط به مدیریت کاربران در ASP.NET کامل هست و برای پروژه های سازمانی و عمومی فوق العاده هستند.
این کامپوننتهای زمانی قابل استفاده خواهند بود که شما از ممبرشیپ استفاده کرده باشید و خودتون مدیریت کاربران رو از صفر پیاده سازی نکرده باشید.



توضیح
نام کامپوننت


با استفاده از این کامپوننت می تونید ثبت نام کاربران رو به شکلهای مختلف انجام بدید. حتی ثبت نامهای مرحله ای و ...
CreateUserWizard


برای لاگین کاربر مورد استفاده قرار می گیره.
Login


محتوایی رو بر اساس کاربر وارد شده به صفحه نمایش میدهد.
LoginView


برای نمایش و هدایت کاربر به صفحه لاگین یا خروج از وب سایت، این کامپوننت بصورت خودکار پس از ورود کابر از Login به Logout تغییر می کنه و البته کاملا قابل کنترل است
LoginStatus


نمایش نام کاربر لاگین شده به سایت. البته ما چون فارسی استفاده می کنیم شاید کاربردی نداشته باشه، چون یوزرنیم رو نمایش میده
LoginName


این هم یک کامپوننت کامل هست برای تغییر کلمه عبور توسط خود کاربر
ChangePassword


و در آخر اگر کاربر پسوردش رو فراموش کرد می تونه پسوردش رو با این کامپوننت ریست کنه و ایمیل مربوط به تغییر رو دریافت کنه
PasswordRecovery

shahram176
یک شنبه 03 فروردین 1393, 14:21 عصر
این کامپوننت با ممبرشیپ ASP.NET کار میکنه، پس اگر مدیریت کاربران رو خودتون دوباره پیاده سازی کردید که باید یکی مثل این بسازی :)

میشه درباره ممبرشیب توضیح بدید

mRizvandi
چهارشنبه 06 فروردین 1393, 12:14 عصر
من توی سایت یه جستجو کردم، آموزش کاملی ندیدم، دوباره جستجو می کنم، اگر موردی پیدا نشد، سعی می کنم یکی بنویسم.

shahram176
چهارشنبه 06 فروردین 1393, 21:03 عصر
Random rnd = newRandom();

mpass = (rnd.GetHashCode() % 100000).ToString();

این را باید تو لود دکمه بنویسم درسته؟

setareh2013
چهارشنبه 06 فروردین 1393, 22:09 عصر
داخل کد دکمه ی ارسال رمز عبور باید بنویسید.

shahram176
جمعه 08 فروردین 1393, 18:58 عصر
داخل کد دکمه ی ارسال رمز عبور باید بنویسید.
درسته من تو کد دکمه ارسال نوشتم ازnewRandom, mpass ایراد گرفت

angel farahani
جمعه 08 فروردین 1393, 20:42 عصر
دوستان من میخوام از این کامپوننت Password Recovery استفاده کنم . میشه بگید من که کاربر هام رو در sql دارم و نام کاربری آن در sql دخیره شده ، چطوری باید به این کامپوننت وصل شه و نام کاربری رو تایید کنه تا رمز را به ایمیل کاربر ارسال کنه ؟

shahram176
دوشنبه 11 فروردین 1393, 15:22 عصر
درسته من تو کد دکمه ارسال نوشتم ازnewRandom, mpass ایراد گرفت
دوستان برای رفع ایراد گرفته شده چیکار کنم؟

shahram176
جمعه 22 فروردین 1393, 13:09 عصر
دوستان برای رفع ایراد گرفته شده چیکار کنم؟
دوستان لطفا راهنمایی کنید

mahasti
جمعه 22 فروردین 1393, 13:30 عصر
دوستان لطفا راهنمایی کنید


متغیر mpass رو از نوع string تعریف کردین؟
چه ایرادی میگیره؟

shahram176
جمعه 22 فروردین 1393, 13:56 عصر
زیر rnd خط میکشه mpassباید از نوع string باشه؟

mahasti
جمعه 22 فروردین 1393, 15:16 عصر
زیر rnd خط میکشه mpassباید از نوع string باشه؟

شاید namespace خاصی داره,روی rnd کلیک راست و alt+shift+f10 رو بزنید تا این بابت مطمئن بشید!

shahram176
جمعه 22 فروردین 1393, 15:29 عصر
درست شد فقط طول رمز تصادفی را چزوری میشه کم یا زیاد کرد مثلا نام کاربری را 5 رقمی درست کنه