0

تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی


نقل قول sajad2007

 در بخش چهارم در css در menu زمانی که line-height را 30 قرار میدم توی مرورگر کروم خوبه ولی در اکسپلور پایین نشان میده و زمانی که آن را صفر می کنم در اکسپلور خوبه ولی کروم آن را بالا نشان میدهد

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


با سلام و احترام

بسیاری از پارامترها هستند که در بعضی مرورگرها از آنها پشتیبانی می شود و در سایر مرورگرها از آنها پشتیبانی نمی شود به همین دلیل ممکن است شما یک قالب را که طراحی کردید در یک مرورگر ، بسیار زیبا و درست ببینید و در مرورگر دیگر آنرا مقداری در هم ریخته و نامرتب ، برای رفع این مشکل شما می توانید از پارامترهایی که در تمامی مرورگر ها پشتیبانی می شود استفاده کنید

اگر با برنامه htmlpad کار می کنید ، زمان افزودن یک پارامتر ، در گوشه سمت راست و پایین صفحه ، شما لیست مرورگرهایی که از پارامتر مورد نظر پشتیبانی می کنند را خواهید دید .

بهتر است مقدار line-height را به اندازه ارتفاع منو قرار دهید ، ممکن است ارتفاع منوتان 37 یا هر مقدار دیگر باشد ، در صورتی که مقدار line-height را برابر با ارتفاع منو قرار دهید فکر کنم مشکلتان رفع شود .

موفق باشید

شنبه 26 اسفند 1391  8:23 AM
تشکرات از این پست
ravabet_rasekhoon a_sadri
ahadabasi
ahadabasi
کاربر تازه وارد
تاریخ عضویت : اسفند 1391 
تعداد پست ها : 7
محل سکونت : لرستان

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی

سلام

می خواستم بدونم قسمت آخر آموزش چه زمانی روی سایت قرار می گیره (قسمت 12)

پنج شنبه 1 فروردین 1392  12:31 AM
تشکرات از این پست
hosseinb68
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی


نقل قول ahadabasi

سلام

می خواستم بدونم قسمت آخر آموزش چه زمانی روی سایت قرار می گیره (قسمت 12)


با سلام و احترام خدمت شما کاربر گرامی

قسمت آخر آموزش ها برای مسئول انجمن ها ارسال شده و ایشون گفتن که چون این روزها تعطیل هست ممکن است امکان بارگزاری فایل ها رو نداشته باشند و شاید به اولین روز کاری اداری موکول شود .

متن نوشته ایشون در لینک زیر موجود است :

پاسخ به:پل ارتباطی شما با مسئول انجمن های سایت

موفق باشید

پنج شنبه 1 فروردین 1392  12:19 PM
تشکرات از این پست
only110
only110
کاربر طلایی3
تاریخ عضویت : اسفند 1390 
تعداد پست ها : 651
محل سکونت : قم

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی

با سلام

من در تمرین درس 2 مشکل دارم

اگه میشه راهنمایی بکنید

این کار من است لطفا تصحیح کنید

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title></title>
</head>

<frameset rows="50%,50%" cols="20%,60%">

  <frame src="page1.html" />
  <frame src="page2.html" />
  <frame src="page3.html" />
  <frame src="page4.html" />
</frameset>

</html>

 

 لبیک یا خامنه ای لبیک یا حسین 

 

 

سه شنبه 13 فروردین 1392  11:55 PM
تشکرات از این پست
hosseinb68
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی


نقل قول only110

با سلام

من در تمرین درس 2 مشکل دارم

اگه میشه راهنمایی بکنید

این کار من است لطفا تصحیح کنید

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title></title>
</head>

<frameset rows="50%,50%" cols="20%,60%">

  <frame src="page1.html" />
  <frame src="page2.html" />
  <frame src="page3.html" />
  <frame src="page4.html" />
</frameset>

</html>

باید از frameset تو در تو استفاده کنید مانند زیر

<html>
  <frameset rows="50%,50%">
    <frame src="page1.html">
      <frameset cols="25%,75%">
        <frame src="page2.html">
        <frame src="page3.html">
      </frameset>
  </frameset>
</html>

موفق باشید


 

چهارشنبه 14 فروردین 1392  3:39 PM
تشکرات از این پست
only110
only110
only110
کاربر طلایی3
تاریخ عضویت : اسفند 1390 
تعداد پست ها : 651
محل سکونت : قم

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی

باسلام

من در درس سوم وقتی تصویر  Header را قرار می دهم در فایل css تصویر را نشان می دهد و بعد هم save می کنم  اما در html نشان نمی دهد

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title>وب سايت من</title>
  <link href="stile.css"  rel="stylesheet" />
</head>

<body>

<div>

<div  id="header">

اينجا محل قرار گرفتن سر تيتر است

</div>

<div dir="menu">

</div>

<div id="continer">

<div id="right">


</div>

<div id="left">

</div>

</div>

<div id="footer">

</div>




</div>

</body>

</html>

 لبیک یا خامنه ای لبیک یا حسین 

 

 

چهارشنبه 14 فروردین 1392  4:35 PM
تشکرات از این پست
hosseinb68
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی


نقل قول only110

باسلام

من در درس سوم وقتی تصویر  Header را قرار می دهم در فایل css تصویر را نشان می دهد و بعد هم save می کنم  اما در html نشان نمی دهد

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title>وب سايت من</title>
  <link href="stile.css"  rel="stylesheet" />
</head>

<body>

<div>

<div  id="header">

اينجا محل قرار گرفتن سر تيتر است

</div>

<div dir="menu">

</div>

<div id="continer">

<div id="right">


</div>

<div id="left">

</div>

</div>

<div id="footer">

</div>




</div>

</body>

</html>


با سلام و احترام

ممکن است عرض و ارتفاع header را تعیین نکرده باشید . در صورت امکان فایل رو برام ایمیل کنید تا بررسیش کنم.

موفق باشید

چهارشنبه 14 فروردین 1392  5:32 PM
تشکرات از این پست
only110
ahadabasi
ahadabasi
کاربر تازه وارد
تاریخ عضویت : اسفند 1391 
تعداد پست ها : 7
محل سکونت : لرستان

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی

با سلام

من میخواهم امکان عضویت در سایت وجود داشته باشد

 به چه طریقی نام کاربری و آدرس های ایمیل چک بشود که آیا تکراری هست یا نه ؟

با تشکر

جمعه 16 فروردین 1392  12:31 AM
تشکرات از این پست
only110 ravabet_rasekhoon
mahdishamsi
mahdishamsi
کاربر برنزی
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 77
محل سکونت : گیلان

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی

با سلام
سه سوال داشتم خدمتتون
1.با چه دستوري مي توان محتواي فيلدهاي يک رکورد خاص از گريد ويو يا ديتاليست را به داخل يک textbox  ريخت؟
2.آيا با اضافه کردن username , password به کانکشن استرينگ در فايل webconfig  مشکلي براي براي يک سايت که ديتابيس هم دارد به وجود مي آيد؟
 

 و ما توفیقی الا بالله

network+

 

 

شنبه 25 خرداد 1392  1:58 PM
تشکرات از این پست
ravabet_rasekhoon
aashkan
aashkan
کاربر تازه وارد
تاریخ عضویت : آذر 1392 
تعداد پست ها : 2

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی

سلام 2 تا سوال داشتم

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

و قطعه کدی که بتوان از طریق آن آپلود و دانلود فایل کرد

شنبه 27 اردیبهشت 1393  3:07 AM
تشکرات از این پست
hosseinb68 ravabet_rasekhoon
mrtz66
mrtz66
کاربر تازه وارد
تاریخ عضویت : مرداد 1393 
تعداد پست ها : 1

دسترسی به asp.net Configuration در ویژوال 2013

با سلام. چطور میتونم به configuration در ویژوال 2013 دسترسی پیدا کنم؟ در ورژن های قبلی از منوی وبسایت قابل دسترسی بود ولی در این ورژن پیداش نکردم

خواهشا راهنمایی کنید...

یک شنبه 19 مرداد 1393  11:57 AM
تشکرات از این پست
ravabet_rasekhoon voiceofrain
msh120
msh120
کاربر تازه وارد
تاریخ عضویت : شهریور 1393 
تعداد پست ها : 2

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی

 سلام میخواستم ببینم چطوری میشه یه سایتی یا قسمتی از اون رو داخل سایت خودم بذارم؟یعنی سایت مورد نظر رو به صورت زنده طوری قرار بگیره که داخل قالب سایت دوم باشه

با تشکر

شنبه 8 شهریور 1393  7:43 PM
تشکرات از این پست
ravabet_rasekhoon
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

پاسخ به:تاپیک تخصصی توسعه ASP.net : پاسخگویی به روز به کلیه سوالات عمومی و تخصصی


نقل قول msh120

 سلام میخواستم ببینم چطوری میشه یه سایتی یا قسمتی از اون رو داخل سایت خودم بذارم؟یعنی سایت مورد نظر رو به صورت زنده طوری قرار بگیره که داخل قالب سایت دوم باشه

با تشکر


با سلام و احترام خدمت شما

لطفاً دقیق تر بیان کنید که چه چیزی مورد نظر شماست!!!!!!؟؟؟؟

اگر منظورتان این است که در سایتی با ادرس www.test.ir یک وب سایت دیگر با آدرس www.test.ir/site1 ایجاد کنید در صورتی که سایت دوم دارای یک سیستم مدیریت محتوای جداگانه ای باشد کافیست در هاست اول پوشه ی مورد نظرتان را برای مثال در اینجا با نام site1 ایجاد می کنید و سیستم مدیریت محتوای دوم را در آن بارگزاری و استفاده می کنید .

 

یک شنبه 9 شهریور 1393  12:01 PM
تشکرات از این پست
ravabet_rasekhoon msh120
voiceofrain
voiceofrain
کاربر نقره ای
تاریخ عضویت : تیر 1391 
تعداد پست ها : 2005
محل سکونت : اصفهان

قطعه کد لاگین کاربران با asp .net web form

نقل قول aashkan 
سلام 2 تا سوال داشتم
 
قطعه کدی میخواستم جهت برری و کنترل اعتبار کاربرانی که به سیستم وارد میشوند
 
و قطعه کدی که بتوان از طریق آن آپلود و دانلود فایل کرد
 
 
 
================================
 
صفحه login.aspx
 
یه web form با نام login به پروژه اضافه کنید و بعدشم کد های قسمت HTML رو اینطوری قرار بدید.
 
<div class="wrapper sh4 rd4">
    <p style="margin-top:10px;">
        <asp:Label ID="lblmessage" CssClass="message error" runat="server" Text=""></asp:Label>
    </p>
    <dl>
        <dt>نام کاربری:</dt>
        <dd>
            <asp:TextBox CssClass="rd3" ID="txtlogin" runat="server"></asp:TextBox>
 
        </dd>
        <dt>کلمه عبور :</dt>
        <dd>
            <asp:TextBox CssClass="rd3" ID="txtpass" runat="server" TextMode="Password"></asp:TextBox>
 
        </dd>
        <dt>
            <span>کد امنیتی :</span>
            <asp:Label ID="lblsec" runat="server" Text=""></asp:Label>
 
        </dt>
        <dd>
            <asp:TextBox ID="sec_code" runat="server"></asp:TextBox>
        </dd>
        <dt></dt>
        <dd>
            <asp:Button  CssClass="rd3" ID="btn_login" runat="server" Text="ورود به سایت" OnClick="btn_login_Click" />
        </dd>
    </dl>
</div>
در بالاترین قسمت یه لیبل برای نمایش پیغام های خطا و بعدشم دو تا تکست باکس برای نام کاربری و کلمه عبور و بعدشم یه لیبل برای نمایش کد امنیتی و تکست باکس اون و در نهایت هم دکمه ارسال فرم.
 
خوب بعدش میریم سراغ قسمت کد های سی شارپ.اول از همه متد Page_load صفحه رو اینطوری می نویسیم.
 
 
 
protected void Page_Load(object sender, EventArgs e)
{
   lblmessage.Visible = false;
   if (!IsPostBack)
   {
     lblsec.Text = usersUtility.generateSecurity();
   }
}
اون لیبل نمایش پیغام ها رو مخفی میکنیم و بعدش چک میکنیم که صفحه post back نباشه که اگه نباشه یعنی صفحه بار اول هست که داره لود میشه،بنابراین باید لیبل کد امنیتی رو با مقدار برگشتی از تابعی که برای تولید کد امنیتی ساختیم مقدار دهی کنیم.خوب حالا نوبت نوشتن کد لازم برای کلیک شدن دکمه ارسال فرم هستش.روی دکمه دابل کلیک کنید تا این متد ساخته بشه.
 
protected void btn_login_Click(object sender, EventArgs e)
{
    string user_login = txtlogin.Text;
    string user_password = txtpass.Text;
    if (user_login == "" || user_password == "")
    {
        lblmessage.Visible = true;
        lblmessage.Text = "لطفا اطلاعات را به صورت صحیح وارد نمایید";
    }
    else if (sec_code.Text != Session["sec_code"].ToString()){
        lblmessage.Visible = true;
        lblmessage.Text = "کد امنیتی اشتباه است";
        lblsec.Text = usersUtility.generateSecurity();
    }
    else{
        if (usersUtility.check_login(usersUtility.sanitize_Sql(user_login), usersUtility.sanitize_Sql(user_password)))
        {
            HttpContext.Current.Session.Add("userLogin", user_login);
            Response.Redirect("index.aspx");
        }
        else{
            lblmessage.Visible = true;
            lblmessage.Text = "نام کاربری یا کلمه عبور صحیح نمی باشد";
            lblsec.Text = usersUtility.generateSecurity();
        }
    }
}
در ابتدای متد مقادیر نام کاربری و کلمه عبور رو گرفتیم و در متغییر های رشته ای ذخیره کردیم،حالا چک می کنیم اینا خالی نباشن که اگه باشن پیغام خطا رو صادر میکنیم،در غیر این صورت چک میکنیم برای کد امنیتی که اگه درست نباشه (تطابق نداشته باشه) پیغام مناسب رو هم برای اون تولید میکنیم با این تفاوت که بعدشم باید دوباره کد امنیتی رو تولید کنیم،در غیر این صورت پس کاربر اطلاعات رو درست وارد کرده و باید اعتبار سنجی رو صورت بدیم برای این کار ما اومدیم ازیه تابع دیگه استفاده کردیم؛این تابع در همون کلاس userUtility نوشته میشه.که نام کاربری و کلمه عبور رو به عنوان ورودی دریافت میکنه و چک میکنه کاربر موجود هست یا نه.
 
اگه موجود باشه مقدار true و در غیر این صورت مقدار false برمیگردونه.
 
اینم از تابع چک کردن لاگین برای بررسی موجود بودن کاربر در دیتابیس.
public static bool check_login(string user_login, string user_password) {
 
    SqlConnection cnn = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=true");
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = cnn;
    cmd.CommandText = "SELECT user_ID FROM users WHERE user_login=@user_login AND user_password=@user_password";
    cmd.Parameters.AddWithValue("@user_login", user_login);
    cmd.Parameters.AddWithValue("@user_password",GenerateHash(user_password.Trim()));
    cnn.Open();
    DataTable dt = new DataTable();
    dt.Load(cmd.ExecuteReader());
    cnn.Close();
    if (dt.Rows.Count == 1)
    {
        return true;
 
    }
    return false;
}
اگه دقت کنید می بینید که ساختارش دقیقا شبیه همون توابع چک کردن نام کاربری و ایمیل هستش با این تفاوت که ما در کوئری تغییر کوچیکی برای اضافه کردن کلمه عبور دادیم.
 
خبو اگه تابع مقدار true برگردونه یعنی لاگین درسته و ما میایم نام کاربری رو در سشن قرار میدیم و کاربر رو به صفحه اصلی هدایت میکنیم و در غیر این صورت پیغام “نام کاربری یا کمله عبور اشتباه است رو صادر میکنیم”.
 
خوب حالا کدهای صفحه اصلی سایت.ما یه صفحه با نام index ایجاد میکنیم و یه لیبل داخلش قرار میدیم و کدهاش رو اینطوری می نویسیم.
 
protected void Page_Load(object sender, EventArgs e)
{
    if (Session["userLogin"] != null)
    {
        lblStatus.Text = Session["userLogin"].ToString() + "خوش آمدید";
        lblStatus.Text += "<a href=\"logout.aspx\">خروج</a>";
    }
    else
    {
        lblStatus.Text = "<a href=\"login.aspx\">ورود</a><a href=\"register.aspx\">ثبت نام</a>";
    }
}
اسم اون لیبل lblStatus هست، ما در ابتدا چک کردیم اون مقداری که در سشن ذخیره کردیم موجود باشه که اگه باشه یه پیغام خوش آمدگویی به همراه نام کاربری ذخیره شده در سشن و یه لینک برای صفحه خروج در اون لیبل قرار میدیم در غیر این صورت لینک های ثبت نام و ورود رو به کاربر نمایش میدیم.
 
کد های صفحه خروج
 
صفحه خروج ما هم کد خاصی نداره فقط سشن رو پاک میکنیم و کاربر رو به صفحه اصلی هدایت کردیم.
 
 
protected void Page_Load(object sender, EventArgs e)
{
    Session.Clear();
    Session.Abandon();
    Response.Redirect("index.aspx");
}
================================
 

 

بـازم با گریه خوابم برد       بـازم خواب تــــو را دیدم

دوباره....

چقدر غمگینم و تنـــها  چقدر می خوام که باز بـارون بباره

 

بزن بــارون  ببار آروم  بروی پلکای خسته ام

بزن بــارون تو می دونی هنوزم یاد اون هستم

 

دوشنبه 10 شهریور 1393  9:29 AM
تشکرات از این پست
voiceofrain
voiceofrain
کاربر نقره ای
تاریخ عضویت : تیر 1391 
تعداد پست ها : 2005
محل سکونت : اصفهان

قطعه کد لاگین کاربران با membership

سرويس های Membership و Roles در ASP.NET 2.0 (بخش اول) 
تائيد كاربران و امكان استفاده آنان از پتانسيل های موجود بر روی يك سايت و يا برنامه بر اساس مجوزهای تعريف شده ، از جمله عمليات مهم در بسياری از وب سايت ها و يا برنامه های وب است . امروزه بر روی اينترنت می توان سايت های متعددی را مشاهده نمود كه كاربران را ملزم به login نموده تا پس از بررسی هويت آنان ، امكان استفاده از امكانات موجود بر روی سايت ( تمام سايت و يا بخش هائی خاص ) بر اساس مجوزهای تعريف شده ، فراهم گردد . به عنوان نمونه ، در برخی از سايت ها امكان ارسال خبر ، پيام ، مشاهده مقالات و ...  صرفا" در اختيار كاربران تائيد شده گذاشته می شود . 
در سناريوی فوق ما با دو چالش اساسی مواجه هستيم :

  • تائيد هويت كاربران ( Authentication )
  • استفاده از امكانات موجود بر روی سايت توسط كاربران با توجه به مجوزهای تعريف شده ( Authorization  )

اجازه دهيد قبل از اين كه به نحوه مديريت كاربران در ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0 اشاره نمائيم ، تعريفی داشته باشيم از Authentication و Authorization  :

  • Authentication ، فرآيندی است كه بر اساس آن هويت يك كاربر بررسی می گردد. پس از تائيد كاربر ، اين موضوع بررسی خواهد شد كه كاربر تائيد شده مجاز به انجام چه نوع عملياتی است .

  • Authorization ، فرآيندی است كه بر اساس آن مشخص می گردد  كاربر تائيد شده مجاز به انجام چه نوع عملياتی است .

با استفاده از فرآيندهای فوق ، پياده كنندگان می توانند يك سايت را با توجه به نوع كاربران سفارشی نمايند .

ملزومات يك سيستم مديريت كاربران به منظور تامين فرآيندهای Authentication  و Authorization 
ايجاد يك سيستم جهت مديريت كاربران  مستلزم انجام مراحل مشابهی است :

  • ايجاد يك بانك اطلاعاتی كه اطلاعات مربوط به كاربران در آن ذخيره گردد.
  • ايجاد يك صفحه login
  • ايجاد سيستمی به منظور كنترل اين كه كاربران قادر به دستيابی چه صفحاتی می باشند . 
  • ايجاد يك صفحه برای تعريف كاربر جديد 
  • ايجاد يك صفحه برای مديريت سايت جهت مديريت كاربران 
  • و ...

در ادامه به بررسی امكانات ارائه شده در ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0  در خصوص مديريت كاربران خواهيم پرداخت .

ASP كلاسيك 
قبل از ASP.NET ، پياده كنندگان مجبور بودند كه علاوه بر پياده سازی تمامی مراحل فوق ، تمهيدات لازم به منظور تائيد كاربران و صدور مجوزهای لازم به منظور دستيابی به منابع موجود بر روی يك سايت و يا برنامه را انجام دهند . يكی از چالش های اصلی در اين زمينه و در هنگام درخواست يك منبع از سرويس گيرنده  توسط كاربر ، حصول اطمينان از اين موضوع است كه كاربر متقاضی قبلا" تائيد شده باشد . يكی ديگر از چالش های موجود ، نحوه حفاظت برخی صفحات از دستيابی غيرمجاز است . چگونه می توان يك صفحه را بگونه ای پيكربندی نمود كه صرفا" كاربران خاصی بتوانند از آن استفاده نمايند؟ 
به منظور حل مشكل فوق از يك متغير session استفاده می گرديد. برای كاربرانی كه فرآيند Authentication را با موفقيت طی می نمايند يك متغير session ايجاد و در تمامی صفحات وجود اين متغير بررسی می گرديد تا هويت كاربر تشخيص و مجاز بودن وی برای استفاده از صفحه درخواستی تائيد گردد . 
در ASP كلاسيك به منظور مديريت كاربران هيچگونه امكانات بالقوه ای وجود نداشته و پياده كنندگان می بايست علاوه بر ايجاد بستر اطلاعاتی مورد نياز ، ملزومات  سيستم مديريت كاربران را پياده سازی نمايند .

ASP.NET 1.x 
به منظور كاهش عمليات مورد نياز برای پياده سازی سيستم مديريت كاربران در ASP.NET 1.x ، امكانات متعددی ارائه گرديد . تائيد كاربران بر اساس فرم ، امكان تعريف قوانين و مجوزهای دستيابی در فايل web.config ، نمونه هائی در اين زمينه می باشد . 
ASP.NET ، مفهوم تائيد بر اساس فرم را با استفاده از كلاس FormAuthentication معرفی تا امكان ورود و خروج از يك سايت با سهولت بيشتری فراهم گردد . بدين منظور از  يك Authentication ticket حفاظت شده به منظور بخاطر سپردن اين كه چه كاربرانی login نموده اند ، استفاده می گرديد ( در زمان درخواست صفحات ) . برای ايجاد يك مكانيزم ايمن تبادل اطلاعات يك authentication ticket به عنوان يك كوكی بر روی كامپيوتر سرويس گيرنده ايجاد تا امكان بخاطر سپردن و تشخبص اين كه كاربر به برنامه و يا سايت login نموده است وجود داشته باشد (در درخواست های بعدی ) . كلاس FormAuthentication متدهای لازم به منظور كار با authentication ticket (  ايجاد :: logging و حذف :: logout ) را ارائه می نمايد. 
تائيد كاربران مبتنی بر فرم به دنبال اين هدف بود تا بتواند يك رويكرد استاندارد برای انجام دو عمليات متداول در ارتباط با مديريت كاربران را ارائه نمايد . 
روش فوق عليرغم مزايای متعدد ، پياده كنندگان را مجبور می نمايد كه همچنان حجم بالائی از كد را نوشته و مديريت بسياری از عمليات مرتبط با كاربران را خود انجام دهند( ايجاد صفحات login ,logoff ، تعريف يك كاربر جديد و ... ) . بدين ترتيب حجم كار پياده كنندگان نه تنها كمتر نمی گردد ، بلكه در بسياری از موارد نيز افزايش می يابد . رويكرد فوق باعث گرديد كه نتوان از يك روش جامع امنيتی استفاده نمود. مثلا" يك پياده كننده ممكن است اطلاعات كاربران را به صورت متن معمولی و رمزنشده در يك بانك ذخيره نمايد و ديگری به صورت hash  . 
ايده تائيد كاربران مبتنی بر فرم ارائه شده  در ASP.NET 1.x ،‌ يك ايده بزرگ و در عين حال جالب است ولی به نظر  پياده سازی آن با در نظر گرفتن تمامی ملزومات مورد نياز يك سيستم مدرن مديريت كاربران انجام نشده است . 

ASP.NET 2.0 
فرآيند Authentication در ASP.NET 2.0 از طريق سرويس جديد membership  و Authorization از طريق سرويس جديد Roles انجام می شود.
ASP.NET 2.0 كار آغاز شده در تائيد كاربران مبتنی بر فرم را كه در نسخه ASP.NET 1.x شروع شده بود ، تكميل و امكانات مناسبی برای انجام عمليات متفاوتی نظير تائيد كاربران ، ايجاد يك كاربر جديد ، حذف يك كاربر و ويرايش اطلاعات كاربران از طريق برنامه نويسی و به كمك  كنترل های وب را ارائه نمود  . شيوه عملكرد عمومی تائيد كاربران مبتنی بر فرم در ASP.NET 2.0 مشابه نسخه قبلی است و می بايست عمليات اوليه و پيكربندی لازم را از طريق فايل های پيكربندی انجام داد  ( ثبت تنظيمات لازم در فايل web.config )  . چيزی كه در ASP.NET 2.0 به آن اضافه گرديد در واقع membership API  و كنترل های وب ( سرويس دهنده ) امنيتی است .   API فوق به برنامه نويسان اجازه می دهد از طريق كد به پتانسيل های سرويس  membership  دستيابی داشته باشند .
Membership API با استفاده از Provider model پياده سازی شده است . اين بدان معنی است كه عليرغم اين كه اينترفيس فوق به خوبی تعريف شده است ولی می توان در صورت تمايل ، پياده سازی آن را متناسب با شرايط موجود سفارشی نمود . فريمورك دات نت ، بدين منظور كلاس Membership را كه شامل متدهائی نظير CreateUser ,GetAllUser,Validateuser و ... است ، ارائه نموده است .سيستم membership قابليت ها و توانمندهای برنامه نويسی خود را از طريق كلاس Membership ارائه می نمايد . از كلاس فوق می توان مستقيما" در صفحات وب استفاده نمود . مثلا" می توان يك صفحه را ايجاد كه تمام كاربران در سيستم را ليست نمايد ( استفاده از متد Membership.GetAllUsers كه به يك GridView نسبت داده شده باشد) . 
ASP.NET به همراه دو Membership provider از قبل تعبيه شده ارائه شده است .يكی برای ذخيره اطلاعات كاربران در يك بانك اطلاعاتی SQL و ديگری كه از اكتيو دايركتوری استفاده می نمايد . 
علاوه بر موارد فوق ، ASP.NET 2.0 به منظور مديريت كاربران هفت كنترل متفاوت را ارائه كه با استفاده از آنان می توان برنامه های وبی را ايجاد نمود كه از پتانسيل سرويس های membership و roles استفاده نمايند . در واقع ، كنترل های فوق يك رابط كاربر مناسب برای انجام عمليات مرتبط با كاربران را ارائه می نمايند .

در صورتی كه از يك محل ذخيره سازی سفارشی استفاده شده باشد ( در صورت استفاده از يك membership provider سفارشی )  ، همچنان امكان استفاده از كنترل های فوق وجود خواهد داشت . اين كنترل ها عبارتند از :

  • Login : يك اينترفيس متداول برای login شامل نام و رمز عبور را ارائه می نمايد . به صورت پيش فرض ، زمانی كه كاربر بر روی دكمه login كليك می نمايد يك postback ايجاد و كنترل تلاش می نمايد تا بر اساس اطلاعات درج شده توسط كاربر وی را تائيد نمايد . بدين منظور متد ( Verify (Username,password  مربوط به كلاس membership صدا زده می شود . در صورتی كه اطلاعات درج شده معتبر باشند ، يك authentication thicket  برای كاربر ايجاد می گردد . در غيراينصورت يك پيام خطاء بر روی اينترفيس نمايش داده می شود .

  • LoginView : در برخی موارد لازم است كه در يك صفحه محتويات متفاوتی را با توجه به ماهيت كاربر ( ناشناس و يا تائيد شده ) ، نمايش داد. مثلا" زمانی كه يك كاربر ناشناس صفحه اصلی يك وب سايت را مشاهده می نمايد يك Login web control نمايش داده شود و زمانی كه يك كاربر تائيد شده همان صفحه را مشاهده می نمايد ، يك پيام خاص مرتبط با نام كاربر به همراه يك لينك جهت logoff نمايش داده شود . با استفاده از كنترل loginview می توان از دو تمپليت AnonymouseTemplate و LoggedInTemplate استفاده نمود . كنترل های وب و تگ های Html را می توان در AnonymouseTemplate  برای كاربران ناشناس و كنترل ها و تگ های html برای كاربران تائيد شده را در LoggedInTemplate قرار داد . Loginview همچنين می تواند خروجی های متفاوتی را با توجه به نقش كاربر تائيد شده نمايش دهد .

  • PasswordRecovery : كنترل فوق ، اين امكان را در اختيار كاربران قرار می دهد تا بتوانند رمزعبور موجود و يا جديدی را از طريق email دريافت نمايند . در صورتی كه memebership provider رمز عبور را به صورت hashed ذخيره كرده باشد ، فرآيند بازيافت رمز عبور عملا" ايجاد يك رمز عبور جديد و تصادفی است كه برای كاربر ارسال می گردد . برای رمزهای عبوری كه به صورت plain text  و يا رمز شده می باشند ، رمز عبور واقعی موجود برای كاربر از طريق email ارسال می گردد .

  •  Loginstatus : كنترل فوق يك لينك به صفحه login را برای كاربران ناشناس و تائيد نشده ، نمايش خواهد داد . در صورتی كه يك كاربر تائيد شده صفحه را ملاقات نمايد ، يك لينك logoff برای وی نمايش داده می شود .

  •  LoginName : كنترل فوق ، نام كاربر تائيد شده ای  را كه به سيستم وارد شده است ، نمايش می دهد . با استفاده از User.Identity.Name در برنامه ، می توان به كاربرانی كه به سايت و يا برنامه login نموده اند ، دستيابی داشت .

  •  CreateUserWizard : علاوه بر يك صفحه جهت logging ، هر وب سايت مبتنی بر account نياز به صفحه ای دارد تا مشخص نمايد كداميك از كاربران قادر به ايجاد يك كاربر جديد می باشند . كنترل CreateUserWizard ، يك رابط كاربر گرافيكی مناسب برای ايجاد يك كاربر جديد را  ايجاد می نمايد.همانند كنترل login ، پس از تكميل داده در فيلدهای مورد نياز و كليك بر روی دكمه Create user ، متد CreateUser كلاس Membership فراخوانده می شود . CreateUserWizard همچنين می تواند در صورت نياز با استفاده از تمپليت ها سفارشی گردد. 

  • Changepassword : از كنترل فوق به متظور تغيير رمز عبور استفاده می گردد .

تمامی كنترل های امنتيی اشاره شده را می توان بدون نياز به نوشتن كد استفاده نمود . مثلا" برای‌ ايجاد يك صفحه login كافی است يك صفحه با نام Login.aspx را ايجاد و يك كنترل Login را بر روی آن قرار داد . بدين ترتيب شما دارای يك صفحه login می باشيد بدون اين كه لازم باشد از يك خط كد استفاده شود . در صورت تمايل می توان شكل ظاهری و يا منطق كنترل را تغيير داد .
در بخش دوم به بررسی امكانات سرويس جديد membership در ASP.NET 2.0 و نحوه استفاده از آن در برنامه های وب خواهيم پرداخت . 

بـازم با گریه خوابم برد       بـازم خواب تــــو را دیدم

دوباره....

چقدر غمگینم و تنـــها  چقدر می خوام که باز بـارون بباره

 

بزن بــارون  ببار آروم  بروی پلکای خسته ام

بزن بــارون تو می دونی هنوزم یاد اون هستم

 

دوشنبه 10 شهریور 1393  9:34 AM
تشکرات از این پست
دسترسی سریع به انجمن ها