PDA

View Full Version : مشکل خوانده نشدن کوکی در هاست



amir_monster1
پنج شنبه 08 خرداد 1393, 09:53 صبح
با سلام به همه دوستان

من در پروژم یک صفحه ورود یا همان Login دارم که کوکی مرا به خاطر بسپار درست کار نمی کنه

و بعد از چند بار بستن صفحه و باز کردن دیگه کوکی فراخوانی نمیشه و دوباره نیاز به لاگین هست
چک کردم کوکی وجود داره اما خوانده نمیشه

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

این هم کد مربوط



[HttpPost]
public ActionResult Login(LoginModel Login, Account model, EstateModel estate)
{

string pass = CreateMD5Hash(model.Password);

if (Login.IsValid(model.UserName, pass))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
{
if (model.UserName=="admin")
{
return Redirect("~/Confirm");
}
else
{
return Redirect("~/Home");
}
}
}
else
{
ViewBag.msg = " نام کاربری یا رمز عبور اشتباه است ";
}

return View(model);
}




نمایش وضعیت :



@if (Request.IsAuthenticated)
{
<ul>
<li>User.Identity.Name</li>
<li>@Html.ActionLink("خروج", "LogOut", "Account")</li>
</ul>
}
else {
<ul>
<li><a href="~/Account/Login">ورود اعضا</a></li>
<li><a href="~/Register"> عضویــت </a></li>
</ul>
}


و تنظیمات وب کانفیگ :



<authentication mode="Forms">
<!--one month ticket-->
<forms name=".esfaUser"
cookieless="UseCookies"
loginUrl="~/Account/Login"
defaultUrl="~/Home"
slidingExpiration="true"
protection="All"
path="/"
timeout="43200"/>
</authentication>


ممنون میشم از راهنماییتون

amir_monster1
پنج شنبه 08 خرداد 1393, 19:37 عصر
مشکل با تعریف MachineKey در فایل Web.Config حل شد !

این مشکل به روی بعضی از سرور ها پیش میاد...

Mehdi Zarepour
یک شنبه 11 خرداد 1393, 20:34 عصر
سلام
منم یه سری این مشکل رو داشتم و کلی هم کلافم کرده بود، تهش فهمیدم کوکی که خودش زخیره می کنه از همون اول تاریخش جوریه که expier شده هست،اگه Tiket رو خودت بسازی مشکل حل میشه




public virtual void SignIn(UserSecret user, bool createPersistentCookie)
{
var now = DateTime.UtcNow.ToLocalTime();


var ticket = new FormsAuthenticationTicket(
1 /*version*/,
_userSettings.UsernamesEnabled ? user.UserName : user.Email,
now,
now.Add(_expirationTimeSpan),
createPersistentCookie,
_userSettings.UsernamesEnabled ? user.UserName : user.Email,
FormsAuthentication.FormsCookiePath);


var encryptedTicket = FormsAuthentication.Encrypt(ticket);


var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.HttpOnly = true;
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
cookie.Secure = FormsAuthentication.RequireSSL;
cookie.Path = FormsAuthentication.FormsCookiePath;
if (FormsAuthentication.CookieDomain != null)
{
cookie.Domain = FormsAuthentication.CookieDomain;
}


_httpContext.Response.Cookies.Add(cookie);

}