بستر نقش ها به توسعه دهندگان اجازه می دهد تا تعدادی نقش مشخص کرده و تعیین کننده که کدام کاربر به کدام نقش مرتبط است. این اطلاعات در بانک اطلاعاتی در دو جدول نگهداری میشود: aspnet_Roles و aspnet_UsersInRoles. هر رکورد در جدول aspnet_Roles مشخص کننده یک نقش برای یک برنامه ویژه است. همانند جدول aspnet_Users در جدول aspnet_Roles نیز سه ستون با بحث ما مرتبط هستند:
· RoleId
· RoleName
· ApplicationId
RoleId کلید اصلی است و نوع آن uniqueidentifier است. RoleName از نوع nvarchar(256) است. ApplicationId حساب کاربری را به یک برنامه خاص در جدول aspnet_Applications مرتبط میکند.
جدول aspnet_UsersInRoles ارتباط بین کاربران و نقش ها را مشخص میکند. این جدول فقط دو ستون UserId و RoleId دارد و ترکیب هر دو کلید اصلی را میسازد.
اطلاعات گذرواژه در جدول aspnet_Membership نگهداری میشود. SqlMembershipProvider این امکان را در اختیار قرار میدهد که گذرواژه به یکی از سه روش زیر نگهداری شود:
· Clear: گذرواژه در بانک اطلاعاتی به صورت متن ساده نگهداری می شود.
· Hashed: گذرواژه به وسیله یکی از الگوریتمهای موجود Hash شده و در بانک اطلاعاتی نگهداری میشود.
· Encrypted: گذرواژه رمزنگاری شده در بانک اطلاعاتی نگهداری میشود.
فنآوری نگهداری گذرواژه در بانک اطلاعاتی بستگی به تنظیمات مشخص شده SqlMembershipProvider در Web.config دارد. ما در گام چهارم به بررسی تنظیمات SqlMembershipProvider میپردازیم. فنآوری پیش فرض برای نگهداری گذرواژه، روش Hashed میباشد.
ستونهای مربوط به گذرواژه Password, PasswordFormat و PasswordSalt هستند. PasswordFormat از نوع int است که عدد مربوط به فنآوری نگهداری گذرواژه را شامل میشود: عدد 0 برای Clear، عدد 1 برای Hashed و عدد 2 برای Encrypted. PasswordSalt یک رشته متنی صرف نظر از اینکه چه فنآوری برای نگهداری گذرواژه استفاده شده است، تولید میکند؛ مقدار PasswordSalt فقط هنگام محاسبه در فنآوری Hashed استفاده میشود. و در پایان فیلد Password که مقدار واقعی گذرواژه را به صورت متن ساده، Hash شده و یا رمزنگاری شده نگهداری میکند.
جدول زیر نگهداری گذرواژه MySecret! را به سه روش نشان میدهد:
اطلاعات حساب های کاربری در دو جدول نگهداری می شود: aspnet_Users و aspnet_Membership. جدول aspnet_Users فیلدهایی برای نگهداری اطلاعات ضروری حساب کاربر دارد. مهمترین سه فیلد عبارتند از:
· UserId
· UserName
· ApplicationId
UserId کلید اصلی است (با نوع uniqueidentifier). UserName از نوع nvarchar(256)، و همراه با گذرواژه اعتبارنامه کاربر را ایجاد میکنند (گذرواژه کاربر در جدول Membership نگهداری می شود). فیلد ApplicationId حساب کاربری را به یک برنامه خاص در جدول aspnet_Applications ارتباط می دهد.
جدول Membership شامل اطلاعات اضافی حساب کاربری است؛ مانند: گذرواژه کاربر، نشانی رایانامه، تاریخ و ساعت آخرین ورود به سیستم و غیره. یک تناظر یک به یک بین رکوردهای جداول aspnet_Users و aspnet_Membership وجود دارد. این ارتباط با فیلد UserId در جدول aspnet_Membership که به عنوان کلید اصلی قرارداده شده است، تضمین میشود. همانند جدول aspnet_Users، جدول aspnet_Membership نیز دارای فیلد ApplicationId است که مشخص میکند اطلاعات هر رکورد مربوط به کدام برنامه است.