PDA

View Full Version : سوال: چند سئوال ساده پیرامون تعیین هویت



h_r_sh
چهارشنبه 16 آذر 1390, 20:48 عصر
وقتی که از کنترل های دات نت برای احراز هویت استفاده می کنیم:
1-بعد از تعیین هویت دقیقا چه اتفاقی رخ می دهد؟
2-بعد از تعیین هویت فرد، اطلاعات او کجا ذخیره می شود؟ یعنی چطور در هر لحظه می توانیم با استفاده از کلاس MemberShip و یا Profile به اطلاعات فرد تعیین هویت شده دسترسی داشته باشیم؟

M.D.A_M.D.A
چهارشنبه 16 آذر 1390, 22:02 عصر
اول کلاس membership رو خیلی سریع توضیح مدم بعد کار های که با اون میشه انجام داد رو میگم.
کلاس membership چند تا خصوصیت readonly داره مثل:
EnablePasswordReset که مشخص میکنه که کاربر میتونه پسوردش رو عوض کنه یا نه(boolean)
EnablePasswordRetrieval مشخص میکنه که کاربر میتونه پسوردش رو بازیابی کنه یا نه(boolean)
HashAlgorithmType نوع الگوریتم برای کد کردن پسورد رو مشخص میکنه
MaxInvalidPasswordAttempts تعداد دفعاتی که کاربر میتونه پسوردش رو اشتباه بزنه
MinRequiredNonAlphanumericCharacters تعداد کاراکتر های غیر حرفی/عددی که باید در پسورد موجود باشه(!@#..)
MinRequiredPasswordLength حداقل تعداد حروف پسورد(پیشفرض 7)
RequiresQuestionAndAnswer مشخص میکنه که آیا کاربر میتونه سوال امنیتی و جواب اونو وارد کنه یا نه

اینا از مهمترین ها بودن که میشه تنظیمشون کرد. تو پوست بعدی نحوه تنظیم اونا رو میگم.

M.D.A_M.D.A
چهارشنبه 16 آذر 1390, 22:10 عصر
برای تنظیم این خصوصیات باید فایل web.config داخل پروژه رو باز کنید بعد بین تگ system.web این تنظیمات رو میشه انجام داد (البطه لازم نیست که همه رو نوشت اگه بعضی از اونا رو ننیویسید از پیشفرض استفاده میکنه)

<membership
defaultProvider="SqlProvider" >
<providers>
<clear/>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
enablePasswordRetrieval="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordFormat="Hashed" applicationName="/" />
</providers>
</membership>

M.D.A_M.D.A
چهارشنبه 16 آذر 1390, 22:22 عصر
این کلاس یکسری متد هم داره که بعضی از مهمترین هاشون رو میگم:
Membership.CreateUser(
username,passwoed,email,passwordQuestion ,passwordAnswer ,isApproved ,MembershipCreateStatus )
این کد برای ساختن یک یوزر جدید استفاده میشه مثل:


MembershipCreateStatus status;
MembershipUser newuser =
Membership.CreateUser(
username, passwoed, email, passwordQuestion, passwordAnswer, true, out status);


اگه در ایجاد کاربر خطایی رخ بده newuser برابر با null میشه و خطای رخ داده در داخل status قرار میگیره

h_r_sh
چهارشنبه 16 آذر 1390, 22:26 عصر
برای تنظیم این خصوصیات باید فایل web.config داخل پروژه رو باز کنید بعد بین تگ system.web این تنظیمات رو میشه انجام داد (البطه لازم نیست که همه رو نوشت اگه بعضی از اونا رو ننیویسید از پیشفرض استفاده میکنه)

<membership
defaultProvider="SqlProvider" >
<providers>
<clear/>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
enablePasswordRetrieval="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordFormat="Hashed" applicationName="/" />
</providers>
</membership>


منظورم نحوه کار نیست.
بعد از این که کاربر وارد شد، سیستم چطور می تونه تشخیصش بده؟
همه ی اطلاعاتش هم قبلا در دیتا بیس ثبت شده، ولی وقتی از متد GetProfile() استفاده می کنیم و یا
User.Identity.Name
استفاده می کنیم، سیستم چطور می تونه بفهمه که اطلاعات مربوط به کدام کاربر رو باید از دیتا بیس بخونه؟

M.D.A_M.D.A
چهارشنبه 16 آذر 1390, 22:29 عصر
برای حذف user هم از متد زیر استفاده میشه:

Membership.DeleteUser(username);

dorparasti
چهارشنبه 16 آذر 1390, 22:40 عصر
برای هر کاربر یک سشن با ID خاص اون در سرور ساخته میشه ( بعد از لاگین ) و ID این سشن در قالب یک کوکی در سیستم کاربر ذخیره میشه . در هر درخواست سرور از کوکی مذکور برای بازیابی اطلاعات مربوط به کاربر جاری استفاده می کنه .

h_r_sh
چهارشنبه 16 آذر 1390, 22:59 عصر
برای هر کاربر یک سشن با ID خاص اون در سرور ساخته میشه ( بعد از لاگین ) و ID این سشن در قالب یک کوکی در سیستم کاربر ذخیره میشه . در هر درخواست سرور از کوکی مذکور برای بازیابی اطلاعات مربوط به کاربر جاری استفاده می کنه .
آره، مرسی. منظورم همین بود.