سلام
کسی به سرویس های کاربر متد changePassword رو اضافه کرده تا حالا؟
میشه راهنمایی بکنید چجوری باید پسورد رو تغییر بدیم
مشکل اصلیم اینه نمیدونم وقتی کاربر پسورد فعلی رو وارد کرد چجوری با پسورد فعلی مقایسه بکنم
و اینکه متد resetPassword هم یک توکن بعنوان پارامتر ورودی میخواد ! اونو از کجا بیارمش؟
منظور از ResetPassword همون فراموشی رمز عبور هست که سناریو اش این شکلیه که
شما یه لینک ارسال می کنید به موبایل یه ایمیل فرد و توی این لینک یه توکن ایجاد شده توسط خود SigninManager رو توش قرار میدید.
هش پسورد قبلی رو میتونید با هش پسورد جدید مقایسه کنید ولی من بلد نیستم کدش رو متاسفانه ولی یه سرچ بزنید احتمالا پیدا می کنید. ولی باید یه متدی باشه که یکی از overload هاش رمز فعلی رو بگیره.
اگه پیدا کردم همینجا براتون میفرستم
با استفاده از درخواست SMTP میتونید ارسال کنید.
کدش تو اینترنت هست. فقط یا باید سرور داشته باشید یا اینکه با ایمیل gmail یا yahoo ارسال کنید که اون هم یه مقداری داستان داره.
شما برای حالت دمو توی Content لینک رو قرار بده و تست کن
موقع پابلیش و خرید سرور ایمیل رو درست کن.
اگر کدی که بریک پوینت گذاشتید کار نمی کنه به صورت دستی خودتون لینک رو بسازید که میشه
"/Account/ResetPassword?email={email}&token={token}"
ببخشید ولی من کلا متوجه نشدم!
من قبلا براحتی اینکار رو برای رکاوری پسورد تو پروژه های ام وی سی انجام میدادم بدون این داستان هایی که شما گفتید
یعنی واقعا این معماری اینقدر کارها رو سخت و پیچیده میکنه!؟
عجب
برای ارسال ایمیل شما باید خودتون یه اینترفیس و یه کلاس ازش بسازید.
یه متد ارسال ایمیل مثل این چیزی که توی این لینک توضیح داده شده بزارید تو کلاس
توی Program.cs هم کانفیگش کنید.
اینم لینک متد تغییر رمز عبور
چون شما دارید توی یه لایه دیگه از متد Url.Action استفاده می کنید نمی تونه خودش کنترلر ها رو پیدا کنه
شما به صورت دستی این آدرس رو بنویسید.
که میشه این
var resetPasswordUrl = "/Account/ResetPassword?email={email}&token={token}";
ببخشید یه مقداری پیچیده جواب دادم
بازهم ممنون بابت پاسختون
من سرویس ارسال ایمیل رو مثل نمونه ای که استاد مدائنی در معماری توضیح داده اند، پیاده سازی کردم
اما نمیدونم apiKey رو چی بزنم؟
این برای استفاده از سرویس SendGrid هستش که برای ایرانی ها بستس
من خودم نتونستم استفاده کنم.
با ایمیل گوگل بفرستید راحت تره
دقیقا چه تغییراتی باید تو کدهای استاد بدم؟
کلا سرویس رو عوض کنید
یه تحقیق در مورد ارسال با یه ایمیل گوگل بکنید می فهمید باید چی جاش بنویسید
مهندس اصلانی عزیز، ضمن تشکر مجدد،
مشکل این معماری هستش .
تو این معماری نمیتونم کدها رو پیاده سازی بکنم
هرچی هم سرچ میکنم نمونه کد پیدا نمیکنم
اگر دوره استاد مدائنی رو دیده باشید متوجه میشید طبق مراحل خاصی کدهای ارسال ایمیل رو اضافه کرده اند، کجای کدها رو دستکاری بکنم؟
کدهای EmailSender را به روش smtp تغییرش دادم اما باز ارور دارم و ایمیل ارسال نمیشه
اینهم کدهای مربوط به email Sender
لطفا راهنمایی بفرمایید کجا اشتباه کردم؟
باید پورتش رو توی فایروال باز کنید.
کجا؟ روی ویندوز خودم؟ میشه دقیقتر راهنمایی بفرمایید
طبق آموزشی که فرستادین پورت 587 رو هم باز کردم اما کماکان ارور داره
سلام دوست عزیزم خوبی؟
دوست من شماپسوردی که توی smtp گذاشتی رو چجوری بدست اوردی؟
سلام خیلی ممنون
من پسور اصلی جیمیلم رو میدادم ، بعد از سرچ و ... متوجه شدم که باید پسورد رو از بخش سکیوریتی جیمیلم میگرفتم
الان درست شد و ایمیل رو ارسال کرد
اما یک مشکل دیگه پیش اومده :
وقتی لینک ارسال شده به ایمیل رو کلیک میکنم و وارد صفحه تغییر رمز میشم، همه چی بدرستی کار میکنه تا میرسه به تابع resetpassword که نهایتا میگه invalidToken !!! حیلی جالبه توکن تولید شده و ارسال شده به ایمیل دقیقا همین توکنی هستش که به تابع تغییر پسورد داده میشه اما نمیدونم چرا میگه invalid
تبدیل هم انجام دادم اما تاثیری نداشت
string code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(request.Token));
کاربرگرامی ! لطفا به پیام صوتی زیر گوش دهید.
سلام استاد گرامی وقتتون بخیر
بله همه چی درسته و پارامترها رو هم کنترل کردم
اما استاد یک چیز جالب برخورد کردم
من توکن تولیدی و دریافتی رو ریختم تو یک فایل txt و مقایسه کردمشون
متوجه شدم هنگام دریافت توکن برای تغییر پسورد دوتا علامت + را از بخش انتهایی توکن حذفش کرده!!!!
ببینید:
در بررسی بیشتر متوجه شدم هرجا علامت + توی توکن وجود داره حذفش کرده و space گذاشته!
عجیبه واقعا چکارش بکنم به نظرتون؟
Replace کنید مثبت ها رو به اسپیس
احتمالا مشکلش از داستان های مسیر توی وب هست
خب روی سرور مشکل پیش نمیاد؟ ،هنگام آپلود روی هاست
نه
سلام مجدد
بر روی سرور تستش کردم کلا ایمیل ارسال نمیکنه!!!
جالب اینکه روی لوکال همه چی بدرستی کار میکنه
به نظر شما خطا از چی میتونه باشه؟
کسی تا حالا با این مشکل برخورد کرده؟
من خودم با این مشکل رو به رو شدم. هرچی گشتم راه حلی پیدا نکردم
با پشتیبانی سرور تماس بگیرید احتمالا کمک تون کنن
سرور دست خودمه مهندس
ویندوز سرور هستش اینم مشخصاتش:
روی سرور هم Rule باز کردن پورت رو ساختید؟
یه نرم افزار تست ارسال ایمیل Smtp نصب کنید امتحان کنید ببینید مشکل از کده یا از تنظیمات سرور
یه بار با مرورگر ویندوز سرور هم لاگین کنید توی ایمیلتون
شاید چون با آی پی اش تا به حال کسی وارد نشده گوگل اجازه ارسال ایمیل نمیده
وقتی امکان داره مشکل از SSL هم باشه. اگه مشکل از ارسال امن باشه توی کد از SSL هست.
راه حل دیگه ای به ذهنم نمی رسه
اگه جواب نداد خودتون هم یه تحقیقی توی اینترنت انجام بدید
بله rule پورت 587 رو ایجاد کردم رو فایروال سرور
یعنی چی مرورگر ویندوز سرور رو لاگین بکنم توی ایمیلم؟ میشه واضح تر بگید؟
ssl مشکل داشته باشه چکار باید بکنم؟ از کد هست یعنی؟
شما نسخه Desktop Experience ویندوز رو دارید.
پس میتونید با مرورگر وارد اینترنت بشید
یه بار به صورت عادی لاگین کنید IP تون جزو دستگاه های مجاز ثبت بشه
کلا SMTP بدون SSL اکثر درخواست هاش از دست میره
خیلی ممنون از راهنماییهاتون مهندس عزیز
این مورد بالاخره با روشهایی که گفتین حل شد
تشکر فراوان
زنده باشید
الحمدلله