خرید بک لینک

بخش ادمین و مدیریت رو شروع کردم با angular و angular material. در کل سخت نبود! برای مدال داشتن با این لینک پیش رفتم:

https://www.positronx.io/angular-8-modal-tutorial-with-angular-material-dialog/

https://material.angular.io/components/dialog/overview

اینم خطایی که بهش خیلی خوردم:

https://stackoverflow.com/questions/46705101/mat-form-field-must-contain-a-matformfieldcontrol

یه مشکلم input type file هست توی angular material که هنوز درگیرش نشدم. برای آپلود عکس لازم دارم.

در کنارش درگیر is4 بودم. من موقع checkout کاربر به اطلاعاتش از جمله id و آدرسش احتیاج دارم. باید اینا رو می گذاشتم توی claim هاش و بعد از طریق متدی سمت angular می گرفتمش.

1. is4 رو یک mvc core app در نظر گرفتم و صفحه لاگین و رجیستر رو فعلا دارم سمت اون هندل می کنم. کاربر با کلیک روی بخش هایی که نیاز به auth داره ریدایرکت میشه به اون سرویس و لاگین می کنه و برمیگرده با یک مشت token. دو جور توکن داریم. identity token و access token. هنوز فرقشو نمی دونم!

توی توکنش claim ها هست و میشه بهشون دسترسی داشت. در is4 منظور از resource همون api هست و منظور از client اپلیکیشنی هست که به جای کاربر با سیستم طرفه. یعنی angular app.

سمت کلاینت از یک کتابخونه به اسم angular-oauth2-oidc استفاده می کنم. یه guard نوشتم که توی اون میرم چک میکنم که token کاربر valid هست یا نه. اگه اوکی بود باید بتونه صفحه درخواستی اش رو ببینه و اگر نه به صفحه لاگین سمت is4 منتقل بشه. بعد از لاگین هم برگرده به صفحه ای که می خواسته بره. اما الان می ره به صفحه ای که بوده و این هم باید فکر بشه روش.

برای اینکه بتونم چیزی به claim هام اضافه کنم باید ProfileService بنویسم و اونو درست رجیستر کنم. این موضوع دست آخر مشکلم رو حل کرد:

https://github.com/IdentityServer/IdentityServer4/issues/828

services.AddIdentityServer()
         .AddProfileService()
         .AddSigningCredential(signingCertificate);

رجیسترش اینطوریه.

واقعا هنوز کارم با is4 تموم نشده و خیلی گیر دارم سرش. یه موضوعی بود سر انتخاب template مناسب برای پروژه خودم:

https://github.com/IdentityServer/IdentityServer4.Templates

فعلا کاری که میخوام رو میکنه ولی احتمالا باز هم درگیرش خواهم شد برای Authorization. البته رجیستر هم ندارم. فکر میکنم الان وقتشه فرایند خرید تکمیل بشه. یه مشکلی که دارم سر ذخیره بسکت توی redis هست. کلید مقادیر identity id کاربره و این یعنی کاربر باید قبلش لاگین کرده باشه. این یه مشکله که شاید بشه با تغییر id به session id حلش کرد. ولی فعلا ترجیح میدم با همین روال پیش برم.

برچسب: نویسنده: سام بهرامی تاريخ: شنبه 9 آذر 1398 ساعت: 5:36

صفحه بندی