PDA

View Full Version : مشکل با تشخیص هویت



مهسا صالحی
دوشنبه 25 مهر 1390, 13:55 عصر
یه مسترپیج دارم که دارای منو و بخش login هست.
یک صفحه ی Default دارم که دسترسی به اون محدودیتی برای هیچ کاربر نداره. صفحات دیگر که دارای نقش می باشند در جدولی قرار دادم و نقش هارو با اسپیلیت جدا کردم الان وقتی هر صفحه از پروژه رو اجرا کنم باید صفحه ی Default رو نمایش بده ولی اینکار رو انجام نمیده . اشکال کار کجاست؟
آیا وب کانفیگ رو تغییر بدو؟!!

ce_safdari
دوشنبه 25 مهر 1390, 14:05 عصر
سلام ابن تنظیمات رو باید توی وب کانفیگ انجام بدید
<authentication mode="Forms">
<forms defaultUrl="~/Default.aspx" loginUrl="~/Login.aspx" name="نام کوکیکه می خواهید درست شه" timeout="43200" slidingExpiration="true"/>
</authentication>

جدول نقش ها هم باید جدا باشند فارن کی به جدول کاربر باید باشه این جوری می تونید خیلی نقش تعریف کنید

مهسا صالحی
دوشنبه 25 مهر 1390, 14:29 عصر
من کاربرها رو تو جدول Users که دارای فیلدهای ID , username,password,role هست تعریف کردم. یک جدول pages هم دارم که دارای فیلدهای Page,validrols هست.تو فیلد Page نام صفحات هست و تو فیلدvalidrols نقش ها st,pr,ad
منظورتون چیه کدوم فیلد رو باید کلید قرار بدم؟

ce_safdari
دوشنبه 25 مهر 1390, 14:35 عصر
Roles رو یه جدول قرار بدید ، Users رو یه جدول دیگه این دو تا رو توسط RoleID به هم وصل کنید

مهسا صالحی
دوشنبه 25 مهر 1390, 14:46 عصر
من طبق مقاله ی آقای علی دلشاد درستش کردم اونجا با همچین فیلدی کار نکرده بودن!!!

ce_safdari
دوشنبه 25 مهر 1390, 15:00 عصر
76717اگه می شد لینکشو از اول می گذاشتید بهتر بود منظور نهایی من این تصویره

مهسا صالحی
دوشنبه 25 مهر 1390, 15:30 عصر
76717اگه می شد لینکشو از اول می گذاشتید بهتر بود منظور نهایی من این تصویره

لینک مقاله ها اینا هستند ممنون میشم یه نگاهی بندازین
http://how2learnasp.net/article.aspx?code=85c9dd50-0935-48c2-9039-949da6b42f8d

http://how2learnasp.net/article.aspx?code=41617f88-b91f-4787-8cce-3517eb1dbbfe#

تو رو خدا راهنمایی کنید نمی دونم تو Web.config باید چی بنویسم.:ناراحت:

fakhravari
دوشنبه 25 مهر 1390, 15:57 عصر
سلام
web site> asp.net confugoration
اگه از ویزارد استفاده کنید خودش در کنفیگ کد ها رو میاره:چشمک:

مهسا صالحی
دوشنبه 25 مهر 1390, 16:14 عصر
سلام
web site> asp.net confugoration
اگه از ویزارد استفاده کنید خودش در کنفیگ کد ها رو میاره:چشمک:

اینو از کجا باید انتخاب کنم از منوها؟؟؟؟

مهسا صالحی
دوشنبه 25 مهر 1390, 16:28 عصر
آقای فخر آوری من می تونم پروژه رو براتون بفرستم شما Debug کنید؟؟؟؟؟ این قسمت پروژه کار می کرد نمی دونم چطور شده فردا باید تحویلش بدم.:ناراحت:

ce_safdari
دوشنبه 25 مهر 1390, 18:30 عصر
آقای فخر آوری من می تونم پروژه رو براتون بفرستم شما Debug کنید؟؟؟؟؟ این قسمت پروژه کار می کرد نمی دونم چطور شده فردا باید تحویلش بدم.:ناراحت:

اگه تمایل دارید برای من بفرستید یه نگاهی کنمce.safdari@gmail.com

مهسا صالحی
دوشنبه 25 مهر 1390, 19:00 عصر
اگه تمایل دارید برای من بفرستید یه نگاهی کنمce.safdari@gmail.com

ممنون کل چروژه رو یک جا میل کنم؟!!! میتونید دانلود کنید؟

fakhravari
دوشنبه 25 مهر 1390, 19:07 عصر
سلام

متاسفانه من vb کار نکردم C#‎‎‎‎ کار میکنم .

دیتابیس هم برای من باز نمیشه بعضی اوقاط کپی پیست خراب می کنه بانک .

من کد پیجها رو دیدم .

شما که از همون ممبرشیپ استفاده کردید امکانات asp

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

Dim logininfo As HttpCookie = New HttpCookie("login")

logininfo.Values("id") = id
logininfo.Values("us") = txt_uid.Text
logininfo.Values("ps") = txt_pwd.Text
logininfo.Values("role") = userRoles.SelectedValue

فیلد رول به 3 قسمت تقسیم شده استاد دانشجو admin

مه بعد از ورود کاربر این ها مقدار میگیرند.

خوب کارتون راحت شد . ببنید در هر پیجی که می خواهید ببنید اگه کاربر هست یا نه از کد زیر استفاده کنید .

این کد در پیج لود

u = Request.Cookies("login").Values("us")
r = Request.Cookies("login").Values("role")

برای مثال در پیج تغیر پسورد می توانید نحوه اجرا شدن رو ببینید.

اول یک دستور سرچ گذاشتین که با مقدار های کوکی اجرا میشه

Dim cmd As New SqlClient.SqlCommand("SELECT * from Users_tbl where username='" + u + "' AND password='" + txt_pass.Text + "' AND role='" + r + "'", con)
Dim rd As SqlClient.SqlDataReader
rd = cmd.ExecuteReader


--------------------------------------------------------------------------------

شما یک rols تعریف کردید

در پوشه ای که هم این اعمالات رو کردین یک فایل کنفیگ است

<location path="Admin">
<system.web>
<authorization>
<allow roles="admin"></allow>
<deny users="*"/>
</authorization>
</system.web>
</location>

شما از این کد هم می توانید برای تشخیص کار بر بودن یا نبودن استفاده کنید

اگر کاربر بود بره به همین پیج oki اگر نبود no

If (User.Identity.IsAuthenticated) Then
Response.Redirect("oki")
Else
Response.Redirect("no")
End If


--------------------------------------------------------------------------------

ببنید جوری که شما گفتید مشکل الان فقط برای سطح دسترسی که به شکل بالا قابل انجام است
در بیج لود
Dim logininfo As HttpCookie = New HttpCookie("login")
If (logininfo.Values("role") = "استاد") Then
Response.Redirect("oki")
Else
Response.Redirect("no")
End If

مهسا صالحی
دوشنبه 25 مهر 1390, 19:21 عصر
الان من فقط باید این کد آخری که نوشتین رو بنویسم دیگه نه؟ اما کجا؟!!

fakhravari
دوشنبه 25 مهر 1390, 19:30 عصر
اره چک کنید
پیج لود
Dim logininfo As HttpCookie = New HttpCookie("login")
If (logininfo.Values("role") = "استاد") Then
Response.Redirect("oki")
Else
Response.Redirect("no")
End If

role 3 قسمت که جای استاد باید بنویسی
logininfo.Values("role") = userRoles.SelectedValue
که بعد لوگین یکی از مقدار زیر میگیرد
<asp:ListItem Value="ad">admin</asp:ListItem>
<asp:ListItem Value="pr">استاد</asp:ListItem>
<asp:ListItem Value="st">دانشجو</asp:ListItem>
استاد جای هر کدوم از اینا میاد
ad pr st

مهسا صالحی
دوشنبه 25 مهر 1390, 19:57 عصر
من برا یکی از صفحات چک کردم بعد اجرا این خطا رو میده


Server Error in '/' Application.

The resource cannot be found.

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Requested URL: /no

fakhravari
دوشنبه 25 مهر 1390, 20:02 عصر
Page_Load نوشتین

fakhravari
دوشنبه 25 مهر 1390, 20:40 عصر
حساب کنبد این دکمه لوگین
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim logininfo As HttpCookie = New HttpCookie("login")

logininfo.Values.Add("role", userRoles.SelectedValue)
Response.Cookies.Add(logininfo)
Response.Redirect("Default2.aspx")

End Sub

و این صفحه ای که امنیت میزارین
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (IsPostBack = False) Then
Dim u As String

u = Request.Cookies("login").Values("role")

If (u = "st") Then
Response.Write("oki")
Else
Response.Write("no")
End If
End If

If (IsPostBack = True) Then
Response.Write("page False")
End If
End Sub

m.toosi
پنج شنبه 17 آذر 1390, 16:17 عصر
سلام دوست عزیز
منم مشکل دارم با این تشخیص هویت لطفا منم راهنمایی کن
میشه بگی بالاخره کدام کدهای بالا رو باید تو سایت خودمون بنویسیم؟ من میخوام چنین کاری را انجام بدم ولی نمیدونم کدام کدهارو بزارم
من فقط کدهای پست آخر رو گذاشتم ولی خطا میگیره از این کلمه userRoles
در این خط
logininfo.Values.Add("role", userRoles.SelectedValue)

m.toosi
پنج شنبه 17 آذر 1390, 16:25 عصر
در ضمن من میخواستم role هارو از قسمت Asp.net configuration بسازم
ولی اونجا هم خطا میگیره و وقتی روی گزینه Security از اون صفحه کلیک می کنم میگه
here is a problem with your selected data store. This can be caused by an invalid server name or credentials, or by insufficient permission. It can also be caused by the role manager feature not being enabled. Click the button below to be redirected to a page where you can choose a new data store.

The following message may help in diagnosing the problem: Unable to connect to SQL Server database.
یعنی دیتا بیس رو نمی شناسه روی دکمه choese کلیک میکنم ولی باز هم نمیتونه دیتابیس رو از تو هارد بخونه
فکر میکردم اشکال از sql Expres هست که نصب نشده ولی چند بار هم کلا visual رو پاک کردم و دوباره نصب کردم ولی باز هم درست نشد لطفا یک نفر راهنمایی کنه
خیلی واسم مهمه

fakhravari
پنج شنبه 17 آذر 1390, 17:17 عصر
با سلام
ببنید database در sql اتچ میشود.
اگر نشود به احتمال بسیار زیاد دیتابیس خراب شده است.

m.toosi
جمعه 18 آذر 1390, 06:52 صبح
دیتا بیس مربوط به تشخیص هویت ساخته نمیشه که بخواد اتچ بشه یا نشه
اگر من درست فهمیده باشم زمانیکه از گزینه asp.net configuration استفاده میکنیم خودش دیتابیس رو میسازه
مشکل من اینجاست که میگه دیتابیسی وجود نداره
من فکر میکردم ویژوال من مشکل داره چند بار پاکش کردم و دوباره نصبش کردم ولی فایده ای نداشت

حالا شما بفرمایید چه کنم؟

لطفا راهنمایی کنید

fakhravari
جمعه 18 آذر 1390, 15:05 عصر
برای قسمت دیتابیس راهی به نظرم نمیرسه. اگر دوستان روش خاصی بلند ممنون میشم ذکر کنند.
برای کار شما هم یه پروژه جدید بسازید و از پروژه قبل کپی کنید و کنفیگ فایل جایگذین کنید .
ولی فکر کنم شما میگویید اصلا asp.net configuration کار نمیکند:متفکر:

m.toosi
جمعه 18 آذر 1390, 19:19 عصر
من پروژه جدید هم ایجاد کردم ولی asp.net configuration اصلا کار نمیکنه
البته اگر اشتباه نکنم قبلا یک خطایی داده بود درمورد اینکه sql Expres یعنی همون sql داخل visual2010 موجود نیست
ولی از قسمت server explorer میتونم دسترسی پیدا کنم به دیتابیس های sql server

نمیدونم مشکل از کجاست!!!

fakhravari
جمعه 18 آذر 1390, 19:28 عصر
با سلام
ویژال دوباره نصب کنید در costum نصب یه قسمتی داره sql اون ببین تیک خورده.
فقط اینو در نظر داشته باشید که ویژال 2010 نباید sql برای نصب تیک خورده باشه.
چون فقط با sql 2008 بالا میاد
در کل احتمال از ویندوز باشه.