PDA

View Full Version : سیستم Login



برادران
شنبه 13 اسفند 1384, 23:51 عصر
یک سوال دارم !
شاید سوالام پیش پا افتاده باشه ولی .....

دارم سایتی طراحی می کنم که سیستم Login داره !
البته کاربر غیر عضو هم می توانند صفحات سایت رو ببینند ، فقط یک سری محدودیت داشته باشند ! شبیه همین سایت ( BarnameNevis) .
مطمئنناً باید یک کلید داشته باشیم ! بهتر خود UserName را به عنوان کلید بگیرم ، یا یک کد متناظر اونو ؟؟؟
حالاذخیره اون کلید باید در Cookie باشه ؟؟ یا در session؟؟؟
یک سوال دیگه !!!
اگه به خواهیم اون کلید را در Cookie یا Session بذاریم ، با چی کدش کنیم !؟؟؟؟؟؟؟؟:متفکر:

خیلی خیلی ممنون میشم اگه راهنماییم کنید!
اگه با کد باشه خیلی بهتره:چشمک:

nazaninam
یک شنبه 14 اسفند 1384, 00:34 صبح
اول یکم سرچ کن ....
جواب :
می تونی از جفتش استفاده کنی ( کوکی بهتره)
پیشنهاد : از سیستم اعتبار سنجی و امنیت خود دات نت استفاده کن
مراحل :
1- فضا نام system.web.security رو وارد کن
2- در فایل web.config باید یک تغییراتی جهت امنتیت صفحات و شناسایی کاربران بدی
3- وقتی کاربر username و password وارد می کنه اول چک میکنه اگه درست بود بوسیله دستور
FormsAuthentication.RedirectFromLoginPage(user_nam e.Text)l
(که اون user_name.text مثلا فیلد نام کاربری در داخل صفحه aspx است)
که کاربر رو به صفحه دلخواه هدایت میکنی در غیر اینصورت مثلا پیام خطا میدی
حالا می پرسی این username که طرف وارد کرد کجا رفت جواب اینه که سیستم دات نت خودش یک کوکی میسازه ...
می تونی با دستور user.identity.name نامی که موقع ورود وارد کردی رو بدست بیاری
....

HO457
یک شنبه 14 اسفند 1384, 01:15 صبح
در جهت تکمیل حرف های دوست خوبمون:
اولین کاری که میکنی توی فایل web.config قسمت authentication mode رو از windows به Forms‌ تغییر میدی. بعد تگ زیر رو هم بهش اضافه میکنی:


<authentication mode="Forms">
<forms loginUrl="loginpage.aspx"></forms>
</authentication>

برای لاگین کردن طبق گفته دوستمون میای به این صورت عمل میکنی:


Web.Security.FormsAuthentication.RedirectFromLogin Page(txtID.Text, False or True)

برای خوندن شناسه کاربر بعد از لاگین کردن از دستور زیر استفاده میکنی:


user.Identity.Name

برای اینکه تو برنامه چک کنی کاربر login کرده یا نه از دستور زیر استفاده میکنی:


If User.Identity.IsAuthenticated = False Then

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


Web.Security.FormsAuthentication.HashPasswordForSt oringInConfigFile("aa", "MD5" Or "SHA1")

که تو این دستور MD5‌ و SHA1 دو تا الگوریتم رمزنگاری هستند. البته خودتم میتونی الگوریتم تعریف کنی و رمز کنی(نه برای این دستور)

برادران
یک شنبه 14 اسفند 1384, 23:34 عصر
از راهنماییتون خیلی خیلی ممنونم nazaninam && HO457 . دمتون گرم!
ولی بازم سوال ،
اگه بیشتر از یک کلید داشته باشم چکار کنم ؟
MD5 ، SHA1 چه تفاوتهایی دارند ؟ به عبارتی یک مقایسه کوچیک .
کی از MD5 ، و کی از SHA1 ؟؟؟؟؟؟
رشته ای که تولید می کنند حداکثر چقدر باشه ؟

roya2002_80
پنج شنبه 10 فروردین 1385, 19:18 عصر
سلام
بعد از تصدیق هویت کاربر چه جوری او را به صفحه مورد دلخواه خود رهنمود کنیم؟ من با استفاده از دستور Response.Redirect این کار رو انجام می دم ولی به محض اینکه این دستور اجرا می شه وارد صفحه Login می شه!! اشکال از کجاست؟
یه سوال دیگه هم داشتم اینکه چه جوری نام کاربرانی که داخل فایل Web.config ذخیره می شوند را update کنیم؟
با تشکر

white fox
جمعه 11 فروردین 1385, 06:22 صبح
بعد از تشخیص هویت کاربر رو با دستور زیر مثلا به صفحه اصلی انتقال دهید:


Response.Redirect(FormsAuthentication.GetRedirectU rl(Trim(txtUser.value),False))

اینطوری در واقع یه جورایی کاربر به صورت اهراز هویت دوباره برمیگرده به صفحه Login در خط اول Page_Load یه چک ساده کنید کاربر تائید هویت شده یا نه(دستورش رو بالا دوستمون نوشتن)
اونوقت راحت میشه کاربر رو با همون دستور Response.Redirect به صفحه مورد نظر فرستاد.

roya2002_80
جمعه 11 فروردین 1385, 12:24 عصر
سلام ممنون از جوابی که دادید.
ولی باز هم درست نشد و مشکل دارم .. بعد از تصدیق هویت دنبال صفحه default.aspx می گرده.چه جوری باید تعریف کنم؟ لطفا اگه کدشو دارید بدید, ممنون می شم.

roya2002_80
جمعه 11 فروردین 1385, 15:33 عصر
با سلام
مشکل من تقریبا حل شد فقط نمی دونم یوزرهای درون فایل web.config رو چه جوری update کنم. لطفا اگه کسی در این زمینه کار کرده ما را از راهنمایی های خود بی نصیب نذاره.
با تشکر

HO457
جمعه 11 فروردین 1385, 16:06 عصر
مشخصات کاربرهات مگه تو دیتابیس ذخیره نیست؟؟؟؟؟ کاربرانت رو تو web.config نذار، چون اینجوری امکان اضافه کردن کاربر جدید یا ویرایش اطلاعاتشون رو نداری، البته نه اینکه نشه، ولی اصلا" منطقی نیست. از بانک اطلاعاتی (حالا access یا sql ترجیحا" sql) استفاده کن.

roya2002_80
شنبه 12 فروردین 1385, 12:36 عصر
سلام
ممنون از جوابی که دادید .مشکل من حل شد.

meandyouwith2003
شنبه 12 فروردین 1385, 12:50 عصر
یه سر به لینکهای زیر بزنید ، امیدوارم مفید باشه :
http://www.codeproject.com/Purgatory/Login_System.asp
http://www.dnzone.com/ShowDetail.asp?NewsId=1059
http://weblogs.asp.net/scottgu/archive/2006/02/24/438953.aspx
http://www.daniweb.com/techtalkforums/thread19303.html
http://www.codeproject.com/aspnet/formsroleauth.asp
http://www.codeproject.com/aspnet/Custon401Page.asp
http://www.codeproject.com/aspnet/custom_authentication.asp

موفق باشید

hassan_RK
پنج شنبه 24 فروردین 1385, 14:56 عصر
[QUOTE=HO457]در جهت تکمیل حرف های دوست خوبمون:
اولین کاری که میکنی توی فایل web.config قسمت authentication mode رو از windows به Forms‌ تغییر میدی. بعد تگ زیر رو هم بهش اضافه میکنی:


<authentication mode="Forms">
<forms loginUrl="loginpage.aspx"></forms>
</authentication>

وقتی در وب کانفیگ این سطر را اضافه می کنم error می ده
<forms LoginUrl="ٌWebForm2.aspx">
</forms>

HO457
پنج شنبه 24 فروردین 1385, 15:03 عصر
چه مشکلی، پیغام خطا رو بنویس اینجا

hassan_RK
پنج شنبه 24 فروردین 1385, 15:20 عصر
Error While trying to run project:Unable to start debugigng on web server. Server side-error occurred on sending debug HTTP reguest.
Make sure the server is operating correctly.verify there are no syntax errors in web.config by doing a Debug.Start Without Debugging . you may also Want refer to the APS.NET and ATL Server debugging topic in the online documentation.

mamadgmail
شنبه 26 فروردین 1385, 00:53 صبح
سلام
در روشهایی که دوستان گفتن در واقع از سیستم اعتبار سنجی خود دات نت استفاده شده حالا من یک سوال داشتم
من همیشه توی فرم login بعد از اینکه کاربر احراز هویت می شه یک session رو true می کنم(البته در رویدارد Session_start این session رو برابر false) قرار دادم و بعد در نمان صفحاتم چک می کنم که آیا این Session تورو هست یا خیر به نظر شما این راه درسته؟؟ و آیا می تونه امنیت رو تضمین کنه؟؟

خوش باشید.

roya2002_80
شنبه 26 فروردین 1385, 15:19 عصر
از خطایی که داده باید فایل وب کانفیگت رو اشتباه نوشته باشی؟ کدهاشو با دقت مرور کن

hassan_RK
شنبه 26 فروردین 1385, 16:44 عصر
کد مشکل داشت
بجای authentication
نوشتم authorization
ممنونم از راهنمایی شما

hassan_RK
یک شنبه 27 فروردین 1385, 19:22 عصر
با سلام

برای login اون تیکی که پسورد رو ذخیره می کنه دستورش چیه ( هر وقت ON شد دیگه لازم به وارد کردن یوزر و پسورد نداشته باشه )؟؟؟؟

وقتی کاربر خارج می شه چه دستوریه که یوزر و پسوردش از روی سیستم پاک بشه ؟؟؟؟؟؟؟؟؟؟؟

با تشکر

hassan_RK
دوشنبه 28 فروردین 1385, 16:40 عصر
سلام ممنون از جوابی که دادید.
ولی باز هم درست نشد و مشکل دارم .. بعد از تصدیق هویت دنبال صفحه default.aspx می گرده.چه جوری باید تعریف کنم؟ لطفا اگه کدشو دارید بدید, ممنون می شم.

منم همین مشکل رو دارم

فرمی به نام default.aspx ندارم ولی با اینکه در web config مسیر یه فرم دیگه رو مشخص کردم ولی بعد از صحیح بودن مشخصات کاربر به فرم default.aspx هدایت می شه که چنین فرمی هم ندارم .

لطفا راهنمایی بفرمائید

جواب سئوال بالا رو هم محبت بفرمائید

roya2002_80
دوشنبه 28 فروردین 1385, 21:58 عصر
من اسم صفحه ای که بعد از لوگین کردن باید وارد شود را default.aspx گذاشتم و مشکلم حل شد. اما اینکه چه جوری نام اونو تغییر دهم نمی دونم !! امیدوارم اساتید جواب بدن.

hassan_RK
سه شنبه 29 فروردین 1385, 08:00 صبح
وقتی کاربر خارج می شه چه دستوریه که یوزر و پسوردش از روی سیستم پاک بشه ؟؟؟؟؟؟؟؟؟؟؟

با تشکر[/QUOTE]

دستورش رو پیدا کردم Web.Security.FormsAuthentication.SignOut()
========================

hassan_RK
سه شنبه 29 فروردین 1385, 08:02 صبح
با سلام

برای login اون تیکی که پسورد رو ذخیره می کنه دستورش چیه ( هر وقت ON شد دیگه لازم به وارد کردن یوزر و پسورد نداشته باشه )؟؟؟؟

لطفا راهنمایی بفرمائید .

hassan_RK
چهارشنبه 30 فروردین 1385, 09:16 صبح
با سلام
لطفا یکی جواب بده
1- برای login اون تیکی که پسورد رو ذخیره می کنه دستورش چیه ( هر وقت ON شد دیگه لازم به وارد کردن یوزر و پسورد نداشته باشه )؟؟؟؟

2- تاپیک شماره 25 رو هم جواب نگرفتم .
3- اگر بخواهم دو صفحه جدا رو یکی برای کاربران و دیگری رو برای admin بعد از login شدن هدایت کنم در webconfig چه تغییراتی باید بدم -- منظورم در loginUrl هست .

hassan_RK
پنج شنبه 31 فروردین 1385, 09:44 صبح
با سلام

اساتید لطفا راهنمایی بفرمائید

Behrouz_Rad
پنج شنبه 31 فروردین 1385, 12:20 عصر
1- برای login اون تیکی که پسورد رو ذخیره می کنه دستورش چیه ( هر وقت ON شد دیگه لازم به وارد کردن یوزر و پسورد نداشته باشه )؟؟؟؟

بعد از اینکه از معتبر بودن نام کاربری و کلمه ی عبور، مطمئن شدی:


Dim expire As DateTime = DateTime.Now
If chkPersistent.Checked = True Then
expire = expire.AddYears(5)
Else
expire = expire.AddMinutes(30)
End If

Dim userTicket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, txtUsername.Text.Trim.ToString(), DateTime.Now, expire, chkPersistent.Checked, "ROLE", FormsAuthentication.FormsCookiePath())
Dim encodeDatas As String = FormsAuthentication.Encrypt(userTicket)
Dim userCookie As HttpCookie = New HttpCookie(FormsAuthentication.FormsCookieName(), encodeDatas)
If userTicket.IsPersistent Then userCookie.Expires = userTicket.Expiration
Response.Cookies.Add(userCookie)
FormsAuthentication.RedirectFromLoginPage(txtUsern ame.Text, True)

توضیحات:
"chkPersistant"، نام چک باکسی است که کاربر در صورت تمایل برای ورود خودکار در بازدیدهای بعدی آن را انتخاب می کند.
"txtUsername"، نام TextBox ای است که کاربر، نام کاربری خود را در آن وارد می کند.
"ROLES"، نام نقش کاربر را تعیین می کند. یک مقدار رشته ای است و معمولا مقادیری همانند "admin"، "moderate"، "user" را می پذیرد.
-------------------------------------------------------


2- فرمی به نام default.aspx ندارم ولی با اینکه در web config مسیر یه فرم دیگه رو مشخص کردم ولی بعد از صحیح بودن مشخصات کاربر به فرم default.aspx هدایت می شه که چنین فرمی هم ندارم .

متد RedirectFromLoginPage، کاربر را به صفحه ای که از آن به صفحه جاری آمده هدایت می کند.
اینکار با استفاده از یک متغیر رشته ای که همراه با Query String به صفحه مقصد (معمولا لوگین) پس داده شده، انجام می پذیرد.
نام این کوئری استرینگ، ReturnURL است.
در صورتی که کاربر به طور مستقیم آدرس صفحه ای که در آن متد RedirerctFromLoginPage وجود دارد را در Address Bar وارد کرده یا فرم ابتداییه سایت در هنگام ورود به سایت این صفحه باشد، مسلما کوئری استرینگ ReturnURL نیز دارای مقداری نیست.
در این حالت کاربر به صفحه Default.aspx پاس داده می شود.
توصیه می کنم، نام صفحه آغازین سایت خود را، Default.aspx بگذارید.
البته میشه با اندکی کدنویسی، صفحه ی دلخواهی را تعیین کرد....
--------------------------------------------------------


3- اگر بخواهم دو صفحه جدا رو یکی برای کاربران و دیگری رو برای admin بعد از login شدن هدایت کنم در webconfig چه تغییراتی باید بدم -- منظورم در loginUrl هست .

loginUrl، صفحه ای را مشخص می کند که کاربران ناشناخته - در صورت نیاز به تصدیق هویت - در هر رده ای که باشند، به آن هدایت می شوند.
کاری که شما باید انجام دهید، این است که نقش کاربر را در هنگام ورود به صفحه ای خاص بررسی کنید و با توجه به آن، وی را به صفحه ی خاص منتقل کنید.
در ASP.NET 1.x، این کار با استفاده از متد IsInRole کلاس User و در ASP.NET 2.0 با استفاده از متد IsUserInRole کلاس Roles انجام می پذیرد.

موفق باشید.

hassan_RK
پنج شنبه 31 فروردین 1385, 13:28 عصر
با سلام و تشکر صمیمانه از استاد محترم جناب آقای راد

majid_cs
شنبه 02 اردیبهشت 1385, 10:10 صبح
منم همین مشکل رو دارم

فرمی به نام default.aspx ندارم ولی با اینکه در web config مسیر یه فرم دیگه رو مشخص کردم ولی بعد از صحیح بودن مشخصات کاربر به فرم default.aspx هدایت می شه که چنین فرمی هم ندارم .

لطفا راهنمایی بفرمائید

جواب سئوال بالا رو هم محبت بفرمائید

بعد از تصدیق هویت از کد زیر استفاده کنید:



Dim returnUrl As String = Request.QueryString("ReturnUrl")
If returnUrl = "" Then returnUrl = "index.aspx"
Response.Redirect(returnUrl)

بجای index.aspx اسم هر صفحه دیگری رو که میخواین کاربر به اونجا redirect بشه وارد کنید.

hassan_RK
شنبه 02 اردیبهشت 1385, 14:44 عصر
آقا مجید ممنون از راهنمایی که فرمودید

hassan_RK
یک شنبه 03 اردیبهشت 1385, 10:47 صبح
[QUOTE=Behrouz_Rad]بعد از اینکه از معتبر بودن نام کاربری و کلمه ی عبور، مطمئن شدی:


Dim expire As DateTime = DateTime.Now
If chkPersistent.Checked = True Then
expire = expire.AddYears(5)
Else
expire = expire.AddMinutes(30)
End If

Dim userTicket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, txtUsername.Text.Trim.ToString(), DateTime.Now, expire, chkPersistent.Checked, "ROLE", FormsAuthentication.FormsCookiePath())
Dim encodeDatas As String = FormsAuthentication.Encrypt(userTicket)
Dim userCookie As HttpCookie = New HttpCookie(FormsAuthentication.FormsCookieName(), encodeDatas)
If userTicket.IsPersistent Then userCookie.Expires = userTicket.Expiration
Response.Cookies.Add(userCookie)
FormsAuthentication.RedirectFromLoginPage(txtUsern ame.Text, True)

توضیحات:
"chkPersistant"، نام چک باکسی است که کاربر در صورت تمایل برای ورود خودکار در بازدیدهای بعدی آن را انتخاب می کند.
"txtUsername"، نام TextBox ای است که کاربر، نام کاربری خود را در آن وارد می کند.
"ROLES"، نام نقش کاربر را تعیین می کند. یک مقدار رشته ای است و معمولا مقادیری همانند "admin"، "moderate"، "user" را می پذیرد.
-------------------------------------------------------

بعد از اینکه کاربر تیک چک باکس رو زد و دفعه بعد که خواست وارد بشه بعد از اینکه username رو وارد کرد چطور password به تکست باکس منتسب می شود

با تشکر

Behrouz_Rad
یک شنبه 03 اردیبهشت 1385, 21:17 عصر
چیزی به چیزی منتسب نمیشه!
در صورتی که کاربر تصدیق هویت شده باشد، مجاز به ورود به صفحه ی لوگین نخواهد بود.

موفق باشید.

hassan_RK
دوشنبه 04 اردیبهشت 1385, 14:44 عصر
با سلام
من چند تا ftp دارم و وقتی username رو وارد می کنم چون قبلا تیک ذخیره رو زدم دیگه نیازی به وارد کردن پسورد نیست
منظورم از سئوال بالا یه چیزی مثل این بود
البته کارم تو قسمت login درست شد ولی این یه تیکه رو متوجه نشدم که چطور بعد از وارد کردن username وقتی مکان نما روی تکست باکس password اومد پسورد مربوطه خودش وارد شده باشه .

باز هم از زحمات شما تشکر صمیمانه دارم که وقتتون رو هم برای مبتدیان مثل من قرار می دید .

Behrouz_Rad
دوشنبه 04 اردیبهشت 1385, 15:43 عصر
این یه تیکه رو متوجه نشدم که چطور بعد از وارد کردن username وقتی مکان نما روی تکست باکس password اومد پسورد مربوطه خودش وارد شده باشه .
دوست عزیزم!
یک Select بنویس و چک کن که آیا نام کاربری و کلمه ی عبوری در جدول پیدا میشه که همانند ورودی کاربر باشه یا خیر!
و السلام.

saeid taheri
پنج شنبه 06 مهر 1385, 12:28 عصر
برای از بین بردن اعتبار یک شخص آیا کدی داریم؟