<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mehdi Qanbarzade</title>
        <link>https://virgool.io/feed/@mehdiqanbarzade</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 17:44:37</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/26312/avatar/Quuioh.png?height=120&amp;width=120</url>
            <title>Mehdi Qanbarzade</title>
            <link>https://virgool.io/@mehdiqanbarzade</link>
        </image>

                    <item>
                <title>Spring Cloud</title>
                <link>https://virgool.io/@mehdiqanbarzade/spring-cloud-do6l3q7dqn9f</link>
                <description>توی این پست یه توضیح خیلی سریع از یه پیاده سازی خیلی ساده از Spring Cloud میدم.نکته اول قبل از شروع اینکه این پروژه سمپل رو میتونید اینجا ببنیدسناریو ما خیلی سادس , با استفاده از Spring Cloud دوتا سرویس ایجاد میکنیم که بهم سرویس بدن.اولین قدم پیاده سازی یه Eureka Server هستش که کار اصلیش شناسایی سرویس های ما هستشمیتونید توی دایرکتوری که توی لینک بالا گذاشتم ببینیدش توضیحاتش هم توی کد هست.قدم بعدی نوشتن یسری سرویس ساده هستش که دوتا سرویس خیلی ساده نوشتم که با استفاده از Eureka بهم سرویس میدن اگه توی لینک بالا رفته باشید دوتا دایرکتوری brand service و brand producer داریم که  کارشون همینهتوضیحات بیشتری نمیدم کدها کاملا clean نوشته شدن با کامنت.</description>
                <category>Mehdi Qanbarzade</category>
                <author>Mehdi Qanbarzade</author>
                <pubDate>Sat, 21 Mar 2020 19:11:26 +0430</pubDate>
            </item>
                    <item>
                <title>پیاده سازی JWT در Spring Security</title>
                <link>https://virgool.io/@mehdiqanbarzade/%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-jwt-%D8%AF%D8%B1-spring-security-xrsvf4uulabm</link>
                <description>حالا بعد از اینکه فهمیدیم JWT چی هست توی این پست میخوایم از Spring Security استفاده کنیم و JWT رو توی ی پروژه ساده استفاده کنیم.برای شروع ما باید JWT رو به پروژه اضافه کنیم تا بتونیم توی کدها ازش استفاده کنیم پس میریم به فایل Pom.xml و این تیکه رو به بهش اضافه میکنیم.        &lt;dependency&gt;            &lt;groupId&gt;io.jsonwebtoken&lt;/groupId&gt;            &lt;artifactId&gt;jjwt-api&lt;/artifactId&gt;            &lt;version&gt;0.10.7&lt;/version&gt;        &lt;/dependency&gt;        &lt;dependency&gt;            &lt;groupId&gt;io.jsonwebtoken&lt;/groupId&gt;            &lt;artifactId&gt;jjwt-impl&lt;/artifactId&gt;            &lt;version&gt;0.10.7&lt;/version&gt;            &lt;scope&gt;runtime&lt;/scope&gt;        &lt;/dependency&gt;حالا که Dependency مربوط به JWT رو اضافه کردیم باید متدهای ایجاد TOKEN و یا خوندن اطلاعات خواصی از TOKEN رو بنویسیم برای این کار کلاس JWTUtils رو به این صورت پیاده میکنیم.و مرحله بعد برای اینکه از این کلاس استفاده کنیم نوشتن Filterهای مربوط بررسی احراز هویت و بررسی سطح دسترسی هست که توی این لینک میتونید ببینید.مرحله اخر برای اینکه JWT رو توی پروسه FilterChain توی Spring Security اضافه کنیم اینکه فیلتر های نوشته شده رو توی Config مربوط به Security اضافه کنیم توی این لینک میتونید ببینید.نمونه صددرصد کاملی از JWT نیست ولی در کل میشه گفت روند اضافه کردن JWT به پروژه Spring Security همین طوری هستش.لینک کدهای رو توی این Repository میتونید ببینید.موفق و پیروز باشید.</description>
                <category>Mehdi Qanbarzade</category>
                <author>Mehdi Qanbarzade</author>
                <pubDate>Thu, 05 Mar 2020 11:18:37 +0330</pubDate>
            </item>
                    <item>
                <title>استفاده از JWT در Spring Security</title>
                <link>https://virgool.io/@mehdiqanbarzade/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-jwt-%D8%AF%D8%B1-spring-security-ocx5xoyommqz</link>
                <description>خیلی دوس داشتم زودتر یه آموزش درباره این موضوع اینجا بذارم، یکی از علت های اصلی هم نبود منابع فارسی واسه کسایی بود که تازه میخوان توی این موضوع کار کنن؛ نمیخوام بگم چیزی که من اینجا منتشر میکنم منبع خیلی خفنِ فارسی این موضوع هستش ولی خوب واسه کسایی که میخوان شروع کن میتونه خیلی کمک کنهاولش باید یه دیدگاهی از JWT داشته باشیم که اصلا چی هست و کی به درد پروژه ما میخورهبرای نوشتن توضیحات درباره JWT از این مطلب کمک گرفتم که خیلی جامع و کامل توضیحش دادهدرباره JWT امروزه مسئله امنیت توی اپلیکیشن ها چیزی نیست که به راحتی از کنارش رد شیم، میلیون ها کاربر اطلاعات مهمشون رو توی اینترنت دارن و امن نگه داشتن این اطلاعات یکی از چالش های بزرگ برنامه نویس ها بوده و هست. خوشبختانه این یه مسئله جدیدی نیست و امروزه برنامه نویس ها ابزار های زیادی برای امن نگه داشتن اطلاعات کاربر در اختیار دارن که یکی از اونها JSON Web Tokens یا همون JWT هستش.توی این چندتا مقاله میخوام JWT رو توی چارچوب Spring پیاده کنم ولی خوب قبلش باید ببینم اصلا ساختار JWT  چه شکلیه و چطور کار میکنه.اگه یه سرچ ساده توی گوگل بزنید حتما به این لینک برمیخورید که خیلی کامل JWT رو شرح داده و یه تعریف خیلی ساده و جامع از JWT میده:در واقع JSON Web Token ابزاری کم حجم و ایمن برای بیان ادعاهایی (claims) است که بین دو طرف قابل انتقال است. ادعاهای موجود در JWT به عنوان یه JSON Object رمزگذاری میشوند و در قسمت payload در معماری JSON Web Signature یا JWS و یا به صورت متن ساده در معماری JSON Web Encryption یا JWE استفاده میشن که این امکان را می دهد که ادعاهای دیجیتالی یا یکپارچگی با Message Authentication Code  محافظت شوند.خوب فک کنم یکم پیچیده تر از اون چیزی بود که فک میکردیم واسه همین خیلی ساده شدش رو فعلا میگم حالا توی قدم های بعدی خیلی جزئی تر دربارش صحبت میکنیمخوب قاعدتا ما توی برنامه اطلاعاتی داریم که برای یکسری کاربر خیلی مهم هستن این کاربر میتونه ادمین باشه یا یه کسی که فقط داره از سرویس های برنامه استفاده میکنه و یکسری اطلاعات شخصی توی برنامه داره برای محافظت از این اطلاعات یه برنامه نویس باید یه سازوکاری تعریف کنه که هرکسی فقط به اطلاعاتی که براش تعریف شده دسترسی داشته باشه بعد از این فرایند ما باید اطلاعاتی که کاربر ازمون درخواست کرده رو به صورتی براش بفرستیم که اگه کسی تونست اطلاعات دریافتی کاربر از برنامه  رو شنود  کنه نتونه اونو بخونه به عبارت ساده تر با استفاده از یه کلید که بین کاربر و برنامه توافق شده ما اطلاعات رو کد میکنیم و براش میفرستیم ، کاربر هم با استفاده از اون کلید میتونه اطلاعاتی که خواسته بود رو بخونه.اجرای داخلی JWTوقتی کاربر login میکنه برنامه ما JWT براش درست میکنه که این شکلی هستش:header.payload.signatureقسمت Headerقسمت header شامل اطلاعاتی هستش که ما با استفاده از اون به کاربر میگیم که چطور باید JWT رو بخونن یا اصطلاحا اونو تفسیر کنن.قسمت Payloadقسمت Payload شامل تمام ادعاهای کاربر ما میشه؛ اگه بخوام خیلی خلاصه بگم این ادعاها میتونه شامل اطلاعات مثل نام کاربری یا سطح دسترسی که این کاربر داره.توی ادعاها ما می تونیم سه نوع ادعا داشته باشیم:registered, public, privateادعای registered از اون دسته اطلاعاتی هستن که وجودشون اجباری نیست مثل تاریخ ایجاد TOKEN یا تاریخ انقضاء .ادعای public این اطلاعات معمولا برای کسانی هستش که میخوان از JWT استفاده کنن .ادعای private میتونیم این اطلاعات رو بدون استفاده از دو مورد بالا ذخیره کنیم.قسمت SIGNATUREدر این قسمت نام الگوریتم هایی که با استفاده از انها header ,payload رو کد کردیم و همچنین کلید نوشته شده برای قسمت اول این کافیه سعی میکنم توی قسمت های بعدی شروع به پیاده سازی کنماگه خیلی خوب نمینویسم ببخشید ;)پیاده سازی در Spring Security رو میتونید اینجا ببنید.</description>
                <category>Mehdi Qanbarzade</category>
                <author>Mehdi Qanbarzade</author>
                <pubDate>Wed, 04 Mar 2020 15:12:28 +0330</pubDate>
            </item>
                    <item>
                <title>Gang of Four Design Patterin in Java</title>
                <link>https://virgool.io/@mehdiqanbarzade/gang-of-four-design-patterin-in-java-bkklihgojbky</link>
                <description>اولین پست ویرگول رو با ریپو Design Patternها توی جاوا شروع میکنم حالا تا جایی که حوصله یاری بده میبرمش جلو https://github.com/Mehdiqp/Gang-of-Four-Design-Patterns-in-Java ای بابا اجازه انتشار نمیده میگه حداقل 300کاراکتر باید تایپ کنمخوب فعلا واسه خالی نبودن عریضه براتون میگم که قصدم از فعالیت اینجا اینکه هم دنبال یجایی برای انتشار یه سری مطالب از برنامه نویسی بودم هم اینکه دلم میخواد مسائلی که یه زمانی برام چالش بودن رو اینجا مطرح کنم شاید به درد یکی بخورههمین فک کنم 300کاراکتر پر شد :/</description>
                <category>Mehdi Qanbarzade</category>
                <author>Mehdi Qanbarzade</author>
                <pubDate>Thu, 27 Feb 2020 18:04:26 +0330</pubDate>
            </item>
            </channel>
</rss>