PDA

View Full Version : سوال: توضیح این کدLogin



roshanak_g
شنبه 27 آذر 1389, 16:46 عصر
با سلام

من یه کد login دیدم ولی زیاد متو جه نشدم که چطور کار میکنه من کد رو در اینجا می زارم هرکسی که میتونه لطف کنه تو ضیح بده
ابتدا تو web.config بین دو نود <
<authentication mode="Forms"
>
</authentication> این کدورو رو قرا بدیم .ولی متاستفانه مشکل اینجاست که به این تگ error گرفته میشه واین تگ اصلا تو web.config وجود نداره(تگ credential)



<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880">
<credentials passwordFormat="SHA1">
<user name="admin" password="e9fe51f94eadabf54dbf2fbbd57188b9abee436e" />
</credentials>
</forms>
</authentication>

مرحله دوم این کدها رو داخل contrller قرار میدیم



public class AccountController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult LogOn()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOn(string name, string password, string returnUrl)
{
if (FormsAuthentication.Authenticate(name, password)) {
// Assign a default redirection destination if not set
returnUrl = returnUrl ?? Url.Action("Index", "Admin");
// Grant cookie and redirect
FormsAuthentication.SetAuthCookie(name, false);
return Redirect(returnUrl); ;
}
else {
ViewData["lastLoginFailed"] = true;
return View();
}
}
}

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



if (!Request.IsAuthenticated)
FormsAuthentication.RedirectToLoginPage();

با تشکر قبلی از کسانیکه جواب سوالمو میدن.

alishokr
پنج شنبه 02 دی 1389, 22:19 عصر
با سلام .

کدی رو که در فایل web.config قرار میدید تگهای left رو اضافی داره که می بایست حذف بشه .

، اون ها رو پاک کنید .
حالا کد مربوط به کنترلر :
شما دو تا Action دارید با نام های LogOn. یکی پارامتری نداره و یک Attribute با نام AcceptVerbs داره که باعث میشه این Action به عنوان درخواستهای Get استفاده بشه و دیگری که پارامتر هم داره ، با همون Attribute ، با این تفاوت که درخواستهای Post رو پاسخ میده . یعنی وقتی فرمی در صفحه Submit بشه .

در اون قسمت که گفته شده کد رو داخل صفحه بگذارید ، این امر باعث میشه تا وقتی میخواد View رو Render بکنه ، ابتدا بررسی کنه که آیا درخواست Authenticate شده یا نه و در صورت صحت امر صفحه نمایش داده میشه و در غیر این صورت میره به صفحه Login که در Web.Config تنظیم شده .
البته برای این امر بهتره که از فیلتر Authorize استفاده کنید و یا یک فیلتر کاستم Authorize بنویسید.

با آرزوی موفقیت ...