Я не верю, что куки больше проверяются, и я не уверен, является ли это преднамеренным или нет.
В приложении против RC, которое я написал недавно, я использовал код CookieContainer из этого поста и пользовательский атрибут авторизации для таких классов:
public class LoginRequiredAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
IAppCookies a = new AppCookies(new CookieContainer());
return a.UserId != null; /* Better checks here */
}
}
В моем AppCookies.cs просто есть метод для UserId, подобный этому (для вас автоматически разрешается int / null):
public int? UserId
{
get { return _cookieContainer.GetValue<int?>("UserId"); }
set { _cookieContainer.SetValue("UserId", value, DateTime.Now.AddDays(10)); }
}
Затем просто убедитесь, что ваш web.config настроен так, чтобы он указывал на вашу страницу входа в систему следующим образом:
<authentication mode="Forms">
<forms loginUrl="~/Login"/>
</authentication>
Это означает, что в моем контроллере для получения идентификатора пользователя мне нужно сделать что-то вроде этого, чтобы получить мой cookie:
[LoginRequiredAttribute]
public class RandomController : Controller
{
BaseDataContext dbContext = new BaseDataContext();
private readonly IAppCookies _cookies = new AppCookies(new CookieContainer());
public ActionResult Index()
{
return View(new RandomViewData(dbContext, _cookies.UserId));
}
}