PDA

View Full Version : سوال: اشكال در كار كردن با وب كانفيگ ها در ASP.net وبحث Authentication و Autherization



skysky
یک شنبه 22 آذر 1388, 23:42 عصر
با سلام
من در حال كار در محيط ASP.net هستم با زبان #C . مي خواهم دسترسي كاربر رو به چند صفحه محدود كنم.براي اين كار در وب كانفيگ كل پروژه Authentication تعريف كردم،همان mode=forms و loginUrl=login.aspx و... .و چند صفحه كه مي خواستم محدود باشند را در فولدري فرار دادم و براي اين فولدر يك وب كانفيگ ديگر ساختم و در آن Authorization تعريف كردم،deny users=?0 ،اما هنگام اجرا من بدون لاگين شدن و direct من به صفحه لاگين،هنگامي كه مي خوام به آن صفحات محدود دسترسي داشته باشم،به آن صفحات محدود دسترسي دارم.من اين روش را در كتابي خوانده ام و سري هم به قسمت هاي WAT و IIS manager هم زده ام ام راه حل را پيدا نكرده ام؟!! ممنون

ali_kashani
دوشنبه 23 آذر 1388, 06:54 صبح
سلام

داخل وب كانفيگ اصلي هم مي توني محدوديتهاي مورد نياز را انجام بدي



<location path="Folder Name">
<system.web>
<authorization>
<allow roles="Role Name"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

skysky
دوشنبه 23 آذر 1388, 19:46 عصر
با تشكر
من روشي كه گفتيد هم امتحان كرده ام اما باز هم دسترسي من محدود نشد. من در اين شك هستم كه وقتي سايت را در دامين آپلود كنم اين محدوديت اعمال شود؟!! يعني چون در حال برنامه نويسي هستم دسترسي من را محدود نمي كند؟!

ali_kashani
سه شنبه 24 آذر 1388, 00:45 صبح
سلام

براي ايجاد دسترسي و تعريف User و Role از امكانات MemberShip خود Asp.netاستفاده كردي ؟و در حال حاضر Role ها را تعريف كردي ؟

skysky
سه شنبه 24 آذر 1388, 21:49 عصر
نخير من از پايگاه داده خودم براي user ها استفاده كرده ام و از membership و login اي اس پي استفاده نكرده ام.هيچ role هم تعريف نكرده ام.

mohsen507
چهارشنبه 25 آذر 1388, 18:32 عصر
نخير من از پايگاه داده خودم براي user ها استفاده كرده ام و از membership و login اي اس پي استفاده نكرده ام.هيچ role هم تعريف نكرده ام.

با سلام
دوست عزیر یا باید ابتدا رول ها رو با ابزار asp configuration tools تعریف کنی

skysky
پنج شنبه 26 آذر 1388, 19:34 عصر
سلام
رول هم تعريف كردم و مشكلات اصلي رو پيدا كردم:1.من از پايگاه داده اي كه خودم ساختم براي تعريف user ها استفاده كرده ام و از membership اي اس پي استفاده نكرده ام و login هم خودم نوشتم و از لاگين اي اس پي استفاده نكرده ام و وقتي كه من مثلا در autherization مي نويسم deny="?"i در asp اصلا يوزري تعريف نشده كه بتونه اين دستور اجرا كنه؟! و من هنگامي كه از membership اي اس پي استفاده مي كنم كار مي كنه؟!!در حالي كه من مي خوام از پايگاه داده خودم استفاده كنم!
2.من در authentication قسمت <form name=cooki name> نمي دونم اين cooki رو من بايد تعريف كنم يا نه؟اگه آره كجا و چه جوري؟ ممنون

ali_kashani
شنبه 28 آذر 1388, 02:18 صبح
سلام
1-
اول بايد در Visual Studio Tools و Visual Studio 2005 Command Prompt در خط فرمان ظاهر شده aspnet_regsql را تايپ كن و اجرا كن در Wizard ظاهر شده data Base خودت را انتخاب كن
2-
و ConnectionStringName را در Web Config براي Member Ship و RoleManagerjkzdl تنظيم كني

skysky
یک شنبه 29 آذر 1388, 17:40 عصر
باسلام
باز هم كار نكرد،ببنيد اين كد لاگين منه:


public int VerifyPassword(string strUsername, string strPassword)
{
String strConString;
SqlConnection conHesabi;
SqlCommand cmdVerify;
strConString = WebConfigurationManager.AppSettings["constring"];
conHesabi = new SqlConnection(strConString);
cmdVerify = new SqlCommand("VerifyPassword", conHesabi);
cmdVerify.CommandType = CommandType.StoredProcedure;
cmdVerify.Parameters.Add(new SqlParameter("@return", SqlDbType.Int, 4));
cmdVerify.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
cmdVerify.Parameters.AddWithValue("@username", strUsername);
cmdVerify.Parameters.AddWithValue("@password", strPassword);
conHesabi.Open();
cmdVerify.ExecuteNonQuery();
conHesabi.Close();
return (int)cmdVerify.Parameters["@return"].Value;
}

protected void Button1_Click(object sender, EventArgs e)
{
if (IsValid)
{
switch (VerifyPassword(txtUsername.Text, txtPassword.Text))
{
case 0: { FormsAuthentication.RedirectFromLoginPage(txtUsern ame.Text, chkPersist.Checked); break; }
case 1: { lblError.Text = "شما نام كاربري خود را وارد نكرده ايد!"; Image5.Visible = true; break; }
case 2: { lblError.Text = "شما رمز عبور معتبري وارد نكرده ايد!"; Image5.Visible = true; break; }
}

}

و اينها هم وب كانفيگ من هستند:

<authentication mode="Forms">
<forms loginUrl="~/Login.aspx"/>
</authentication>
و

<system.web>
<authorization>
<deny users="?"/>
<allow roles="Admin"/>
<allow roles="Users"/>
</authorization>
</system.web>

خطا نمیده اما كارهم نمیكنه!
من بايد ديگه چيكار كنم؟:عصبانی++:

ali_kashani
دوشنبه 30 آذر 1388, 01:54 صبح
سلام

شما زماني كه از امكانات MemberShip و Role Manager خود asp.net استفاده مي كني لازم نيست خودت متدي براي چك user و pass بنويسي امكاناتي كه در اختيار شما هست بدين صورته كه با انتخاب گزينه website و asp.net configuration براي شما table هاي مورد نياز ساخته خواهد شد ، شما ميتواني role تعريف كني در همان جا user تعريف كني و ... و با استفاده از control هاي قرار داده شده در toolBox قسمت login شما مي توني به راحتي بدون اينكه كدي بنويسي كار كني
حالا اگه مي خواي ميتونيم مرحله به مرحله جلو بريم.

morteza_1234m
دوشنبه 28 دی 1388, 20:52 عصر
من هم همچنین کاری که رفقیمون skysky (http://barnamenevis.org/forum/member.php?u=116826) گفته میخ.ام بکنم اگر قدم به قدم با من کار کنید ممنون میشم
در ضمن من WAT رو استفاده کردم

abi_sarab
سه شنبه 29 دی 1388, 09:42 صبح
سلام.
آقا یا خانوم skysky.
فی الواقع شما کدهای نوشته شده در وب کانفیگ رو باید اصلاح کنید.
شما در قسمت system.web می نویسید deny user = ?
و بعد خارج از system.web با تگ location و allow users بایستی استثنائات خودتون رو مشخص کنید.
فی الواقع شما با نوشتن deny users ? در system.web ابتدا همه صفحات خود را secure می کنید و بعد با استفاده از تگ location که باید خارج از system.web نوشته شود صفحات استثناء رو مشخص می کنید.

morteza_1234m
سه شنبه 29 دی 1388, 14:01 عصر
بالخره چه شد ما که متوجه نشدیم اگرتکه کدی بذارید بهتر نیست؟؟؟

مهدی کرامتی
سه شنبه 29 دی 1388, 14:36 عصر
لطفا یک نمونه پروژه که تغییرات زیر درونش اجرا شده باشد جهت بررسی ضمیمه کنید.

abi_sarab
سه شنبه 29 دی 1388, 19:52 عصر
بنده متأسفانه در حال حاضر به Visual Stodio دسترسی ندارم.
ولی توضیحاتی که دادم کامل و گویا بود. بارها و بارها این کار رو انجام دادم و هر دفعه خیلی خوب کار می کرد.

دانش آموز
چهارشنبه 30 دی 1388, 01:50 صبح
این فایل web.config در پوشه ای قرار گرفته که من مانع دسترسی کاربران غیر مجاز یا کسانی که ثبت نام نکرده اند می شوم درون این پوشه جدا از این فایل xml صفحات مربوط به کاربران عضو هم قرار می گیرد

morteza_1234m
چهارشنبه 30 دی 1388, 11:33 صبح
دانش آموز (http://barnamenevis.org/forum/member.php?u=109456) عزیز این کجاش محدود کردن پوشه ها رو انجام میده فقط دسترسی رو برای کاربران مجاز می کنه

<?xml version="1.0" encoding="utf-8"?>
<configuration >

<system.web>


<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>

morteza_1234m
چهارشنبه 30 دی 1388, 11:37 صبح
دوستان اگر میشه برای من یک کاری کنید
یک مجموعه به صورت زیر بسازید
http://barnamenevis.org/forum/attachment.php?attachmentid=42755&stc=1&d=1263841485
فرض کنید تو پوشه ادمین یک صفحه هست که کاربران از نوع رول ادمین بهش دسترسی دارند و در پوشه یوزر هم یک صفحه هست که کاربران از نوع رول یوزر بهش دسترسی دارند
اگر این رو به صورت یک پروژه وب برام انجام دهید ممنون میشم
1 ماه گیر این موضوع هستم

مهدی کرامتی
چهارشنبه 30 دی 1388, 12:19 عصر
کاربران شما قرار است کجا تعریف شوند و Role ها چگونه برای آنها تعریف می شود؟

morteza_1234m
چهارشنبه 30 دی 1388, 13:48 عصر
کاربرانم در WAT تعریف می شوند فعلا
و روش تعریف رول هم مثل همون روش wat هست چیز خاصی نیست

mahvand
شنبه 13 مهر 1392, 19:57 عصر
سلام
من هم این مشکلو رو دارم یعنی هم می خوام از مکانیزم تعریفroleها استفاده کنم هم اینکه از پایگاه داده ای که خودم تعریف کردم استفاده کنم!!!!!!!!!!!!!این تاپیک رو بعد کلی جستجو توی گوگل پیدا کردم که بازهم طبق معمول نصفه رهــــــــــــــا شده.
چرا هیجکس پاسخ کامل و درستی به آدم نمیده؟؟؟؟؟؟؟؟