شرح MemberShip و RoleManager

zorig4fun

Member
در جلسات گذشته ما پروفایل را فعال کردیم و پروفایل را برای کاربر در زمان ثبت نام وارد کردیم در این جلسه برای کاربر صفحه ای در نظر میگیریم که اطلاعات را از پروفایل خوانده و بخ ماربر نمایش داده شود هدف ما از این کار نشاندادن این است که چگونه اطلاعات را از پرفایل بخوانیم.

کار بسیار ساده میباشد و با مثالی کار را شروع میکنیم یک صفحه جدید به به پروژه اضافه میکنیم به نام MyProfile.aspx در این صفحه ما میخواهیم که کاربر ثبت نام شده بعد از لوگین کردن اطلاعات پروفایا خود را ببیند. در صفحه ما 3 تا لیبل میزاریم و نامگزاری میکنیم و تکس آنها را حذف میکنیم و در کدهای لود صفحه کدهای ذیل را اضافه میکنیم.


کد:
C#

        Country.Text = Profile.Country;
        Gender.Text = Profile.Gender;
        Age.Text = Profile.Age.ToString();

کد:
VB

Country.Text = Profile.Country 
Gender.Text = Profile.Gender 
Age.Text = Profile.Age.ToString()

در اینجا ما خیلی ساده چند تا لیبلی که در صفحه داشتیم را مقدار تکست آنها را برابر با اطلاعات پروفایل قرار دادیم. اطلاعات پروفایل را ما با صدا زدن کلاس پروفایل و اسم پروفایلی که در وب کانفیگ معرفی کردیم از دیتابیس میخوانیم. در این روش میبینیم که ما هیچگونه کانکشن یا دیتاسرس استفاده نمیکنیم تا اطلاعات را بخوانیم بلکه تمان موارد را خود ماشین به وسیله کلاس پروفایل انجام میدهد.

موفق باشید
 

zorig4fun

Member
متاسفانه سواد دات نت فارسی زبانان بالاتر از فریمورک 1.1 نیست و در اینترنت هیچکسی هیچ مقاله ای دیگر نمینویسه که تکنولوژی روز را به دیگران به زبان فارسی انتقال بده و درسته که زبان برنامه نویسی انگلیسی هست و باید یاد گرفت ولی زمان زیادی را نیاز داریم که انگلیسی را در حدی که بتوان مقاله خواند یاد گرفت اون هم مقاله فنی. برای همین امسال تصمیم گرفتم تا وبسایتی برای این منظور درست کنم و از دوستانی که میتوانند همکاری کنند خواهش میکنم کمک کنند تا وبسایت سریعتر راه اندازی بشه. در پروژه ملورین که کاملا مجانی میباشد و برای فارسی زبانان در نظر گرفته شده ویدئو های برای فروش گزاشته شده که همکنون با دوستانم در ایران برای فروش هماهنگ شده ولی تا سایت راه اندازی نشود به صورت رسمی اعلام نمیشود. درامد حاصل از فروش برای مخارج سایت که کم هم نیست در نظر گرفته شده لطفا برای یادگیری بیشتر شما و ساپرت مالی ملورین این ویدئو ها را با قیمت مناصب خریداری کنید.


بحث را ادامه میدهیم با رول ها تا حالا رول را ما فعال کردیم و در مواردی هم از آن استفاده کردیم ولی کاربری که در سایت ثبت نام میکند هیچ رولی به آن داده نمیشود. در این جلسه ما میخواهیم که وقتی کاربر ثبت نام میکند به کاربر رولی اختصاص دهیم بطور مثال آن را به رول از قبل ایجاد شده (کابر غیر فعال) معرفی کنیم.

برای این کار ما همانند مثالهای پروفایل کلاسی تعریف خواهیم کرد و در هنگام ثبت نام آن را استفاده میکنیم. خوب پروژه قبلی را باز کنید یا اینکه پروژه جدید ایجاد کنید و در صفحه رجیستر کاربر کدهای زیر را وارد کنید.

کد:
C#

// Deactivate event fires when user hits "next" in the CreateUserWizard 
public void AssignUserToRoles_Deactivate(object sender, EventArgs e) 
{ 
    
    
    // Add user to role 
    
    Roles.AddUserToRole(CreateUserWizard1.UserName, "عضو غیر فعال"); 
    
    
}

کد:
VB

    ' Deactivate event fires when user hits "next" in the CreateUserWizard 
    Public Sub AssignUserToRoles_Deactivate(ByVal sender As Object, ByVal e As EventArgs)

            
        ' Add user to role

        Roles.AddUserToRole(CreateUserWizard1.UserName, "عضو غیر فعال")


    End Sub

در اینجا ما کلاسی تعریف کردیم که هروقت کابر دکمه ثبت نام را میزند رولی به نام عضو غیر فعال برای کاربر در دیتابیس ذخیره میشود.
ما کلاس Roles را صدا زدیم و از آن AddUserToRole را که برای اضافه کردن رول به کاربر میباشد را انتخواب کردین در اینجا داخل پرانتز ما تعریف میکنیم که کدام کاربر را باید به رول اختصاص دهد که در اینجا چون کاربر به وصیله کنترل CreateUserWizard1 به دیتابیس اضافه میشود برای همین CreateUserWizard1 را صدا زده و اسمی که کاربر وارد کرده را میگیریم و به آن نام رولی که در دیتابیس موجود میباشد را میدهیم.

کار به این سادگی انجام گرفت و شما همانند درس قبلی میبایست به کنترل CreateUserWizard1 بگید که چه زمانی این کار صورت بگیرد که برای این کار ما مرحله اول را در نظر داریم و به پنجره پراپرتیز رفته و در ایونت CreateUserWizard1 ما CreatedUser را که دکمه ایجاد کاربر هست را به کلاس نوشته شده اختصاص میدهیم.

البته موردی که در جلسه قبل هم یادم رفت بگم این هست که در ایونت کنترل اگر شما دو بار روی ایونت خاصی کلیک کنید کدهای مربوط به آن برای شما ایجاد میشود و کدها را داخل آن میتوانید بنویسید. اسامی کنترل ها و ایونت ها شاید متفاوت باشد برای همین اول دو بار کلیک کنید بعد کدها را با اسامی درست در مابین آنها قرار دهید.


موفق باشید
 
آخرین ویرایش:

zorig4fun

Member
احتمالا این آخرین مقاله من خواهد بود در این تاپیک و بحث رو با ارسال ایمیل به کاربر خاتمه میدهم

در کنترلهای ثبت نام و عوض کردن پسورد و یاداوری پسورد ما در پنجره پراپرتیز یک قسمت میبینیم به نام MailDefinition که کار ارسال ایمیل را به عهده دارد. در این قسمت ما اپشنهای دیگری را داریم که موارد مهم را برای شما توضیح میدهم.

From در این گزینه شما میبایست آدرس ایمیل سایت را وارد کنید.
Priority این گزینه مهم بودن ایمیل را تنظیم میکند.
Subject موضوع ایمیل را مشخص میکند.
BodyFileName در این گزینه که من در آخر اوردم فایل تکسی را باید معرفی کنید که درواقع متن ایمیل شما میباشد.

BodyFileName که یک فایل تکست ساده میباشد اطلاعات کاربر را به وی منتقل میکند. در داخل این فایل شما میتوانید از تگهای HTML نیز برای فرمت دهی استفاده کنید.

فایل BodyFileName را به صورت ذیل بنویسید:

کد:
<%UserName%>
<%Password%>
<%PasswordQuestion%>
<%PasswordAnswer%>

اگر خواستید مواردی را جلوی آنها اضافه کنید که کاربر بداند اطلاعات چه هستند و با ساخت جداول و غیره آنها را فرمت دهی کنید و فایل را با فرمت txt ذخیره کنید.کار به پایان رسید.


امیدوارم که تا اینجا توانسته باشم اطلاعات مفیدی را برای شما نوشته باشم و اگر میخواهید از من تشکر کنید بزرگترین تشکر این هست که من در یک جائی ببینم که تازه کاری سوال کرده و شما وقت گزاشتید و جواب دادید.

امیدوارم همه شما را در سایت خودم www.melorin.net ببینم و در آنجا آموزشهای دیگری را نیز خواهید یافت
موفق باشید
 

TNZ187

Member
واقعا چرا ؟

سلام
واقعا نا امید شدم . :sad: . بابا من که مقالات کامل سفارشی کردن Mmembership , RoleProvider رو لینک داده بودم خوب چرا مراجعه نمی کنید آخه .
برای دوستانی که به طور کلی علاقه به سفارشی کردن دارن کتاب Wrox.Professional.ASP.NET.2.0.Server.Control.and.Component.Development.Aug.2006
رو توصیه می کنم . یک دکتر ایرانی به نام آقای خسروی یا شبه به اون نوشته و متن خیلی رونی هم داره .
 

shirani

مدیر انجمن <A href="http://forum.majidonline.com/f
من ميخوام رول دادن به يوزر ها را روي وب پياده سازي کنم ( نمي خوام از طريق asp.net configoration اينکار انجام بدم )

چي کار بايد کرد
 

m_tavakoli_h

New Member
memebership یا یک گزینه دیگه؟

نظرتون رو در مورد استفاده از mmebership یا این نوشتن جدول دیگه می خو
و اینکه توی roll بایستی فقط نقش ها رو تعریف کرد و یا اینکه عملیت رو هم می شه تعریف کرد
مثلا کارگزین یا اضافه و حذف کارمند
 

tarenoco

Member
سلام منو ببخشید فکر نکنم که جای مناسبی سوال مطرح می کنم
ولی میخوام سوالم رو بپرسم
من یه قالب html دارم میخوام با asp یه امار گیر براش بذارم که آمار روز و هفته و... رو نشون بده
نمیخوام از این کد های آماده استفاده کنم
ممنون میشم راهنمایی کنید
 

websiteEsfahan

New Member
این توضیحات بسیار خوب و جامع است و نقطه شروع مناسبی برای بحث در مورد Membership و Role Management در ASP.NET 2.0 محسوب می‌شود. من هم چند نکته و توضیح تکمیلی به آن اضافه می‌کنم تا بحث کامل‌تر شود. امیدوارم برای دوستان مفید باشد.


توضیحات تکمیلی درباره Membership و Role Management در ASP.NET 2.0

1. Membership (سیستم مدیریت کاربران)

همان‌طور که اشاره کردید، Membership در ASP.NET 2.0 یک سیستم یک‌پارچه برای مدیریت کاربران است. این سیستم به‌طور پیش‌فرض از یک پایگاه داده SQL Server استفاده می‌کند و امکانات زیر را فراهم می‌کند:

  • ثبت نام کاربران (User Registration):
    کاربران می‌توانند در سایت ثبت‌نام کنند و اطلاعاتی مانند نام کاربری، رمز عبور، ایمیل و ... را وارد کنند.
  • احراز هویت (Authentication):
    کاربران می‌توانند با استفاده از نام کاربری و رمز عبور خود وارد سیستم شوند (لاگین کنند).
  • مدیریت رمز عبور (Password Management):
    کاربران می‌توانند رمز عبور خود را تغییر دهند یا در صورت فراموشی، آن را بازیابی کنند.
  • ذخیره اطلاعات کاربران:
    اطلاعاتی مانند تاریخ عضویت، آخرین تاریخ فعالیت، وضعیت کاربر (فعال/غیرفعال) و ... در پایگاه داده ذخیره می‌شود.
  • ایجاد شناسه منحصر به فرد (User ID):
    هر کاربر یک شناسه منحصر به فرد دارد که برای مدیریت دسترسی‌ها و نقش‌ها استفاده می‌شود.
  • قابلیت سفارشی‌سازی:
    می‌توانید سیستم Membership را به‌گونه‌ای تغییر دهید که با نیازهای خاص شما سازگار شود. برای مثال، می‌توانید از یک پایگاه داده متفاوت یا سیستم احراز هویت سفارشی استفاده کنید.

2. Role Management (سیستم مدیریت نقش‌ها)

Role Management مکمل Membership است و به شما امکان می‌دهد تا دسترسی‌های کاربران را بر اساس نقش‌های تعریف‌شده مدیریت کنید. این سیستم امکانات زیر را فراهم می‌کند:

  • تعریف نقش‌ها (Roles):
    شما می‌توانید نقش‌های مختلفی مانند "مدیر"، "کاربر عادی"، "مهمان" و ... تعریف کنید.
  • تخصیص نقش به کاربران:
    هر کاربر می‌تواند یک یا چند نقش داشته باشد. برای مثال، یک کاربر می‌تواند همزمان نقش "مدیر" و "ویرایشگر" داشته باشد.
  • مدیریت دسترسی‌ها (Authorization):
    می‌توانید دسترسی‌های مختلفی را بر اساس نقش‌ها تعیین کنید. برای مثال، فقط کاربرانی با نقش "مدیر" می‌توانند به صفحه مدیریت سایت دسترسی داشته باشند.
  • استفاده از نقش‌ها در کد:
    می‌توانید در کدهای خود بررسی کنید که آیا کاربر فعلی دارای یک نقش خاص است یا خیر. برای مثال:


    if (User.IsInRole("Admin")) { // دسترسی به بخش مدیریت }

3. نحوه پیاده‌سازی Membership و Role Management

برای استفاده از Membership و Role Management در ASP.NET 2.0، مراحل زیر را دنبال کنید:

  1. فعال‌سازی Membership و Role Management:
    در فایل web.config، بخش‌های مربوط به Membership و Role Management را تنظیم کنید. برای مثال:


    <configuration> <system.web> <authentication mode="Forms"> <forms loginUrl="~/Login.aspx" timeout="30" /> </authentication> <membership defaultProvider="SqlMembershipProvider"> <providers> <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="YourConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" /> </providers> </membership> <roleManager enabled="true" defaultProvider="SqlRoleProvider"> <providers> <add name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="YourConnectionString" applicationName="/" /> </providers> </roleManager> </system.web> </configuration>

  2. ایجاد پایگاه داده Membership:
    از ابزار aspnet_regsql.exe برای ایجاد پایگاه داده Membership استفاده کنید. این ابزار جداول و stored procedureهای لازم را در پایگاه داده شما ایجاد می‌کند.
  3. استفاده از کنترل‌های آماده ASP.NET:
    ASP.NET 2.0 کنترل‌های آماده‌ای مانند Login, CreateUserWizard, PasswordRecovery و ... را ارائه می‌دهد که می‌توانید از آن‌ها برای پیاده‌سازی سریع‌تر سیستم Membership استفاده کنید.
  4. مدیریت نقش‌ها:
    می‌توانید نقش‌ها را از طریق کد یا ابزارهای مدیریتی مانند ASP.NET Web Site Administration Tool ایجاد و مدیریت کنید.

4. نکات مهم

  • امنیت:
    همیشه از الگوریتم‌های هش کردن قوی مانند SHA-256 برای ذخیره رمزهای عبور استفاده کنید.
  • سفارشی‌سازی:
    اگر نیاز به تغییر رفتار پیش‌فرض Membership دارید، می‌توانید Providerهای سفارشی ایجاد کنید.
  • محدودیت‌ها:
    Membership در ASP.NET 2.0 ممکن است برای پروژه‌های بسیار بزرگ یا پیچیده کافی نباشد. در این موارد، می‌توانید از سیستم‌های احراز هویت مدرن‌تر مانند ASP.NET Identity (در نسخه‌های جدیدتر دات نت) استفاده کنید.

امیدوارم این توضیحات تکمیلی مفید بوده باشد. اگر دوستان نکته‌ای برای اضافه کردن یا اصلاح دارند، خوشحال می‌شوم کمک کنند!
 

جدیدترین ارسال ها

بالا