Хорошо, что вы друг, это половина прав, но я не верю, что Сессия по сути своей безопасна. В коллекции сеансов хранятся экземпляры объекта. Таким образом, вы можете хранить экземпляр любого типа (строку, int или пользовательский класс входа), потому что все они происходят от объекта. Однако, когда вы извлекаете этот объект, вы не знаете, какой тип он есть, и перед тем, как использовать его, нужно тщательно его бросить с обработкой исключений. например, это работает отлично:
Session["UserName"] = "Freddy";
string theUserName = (string)Session["UserName"];
Однако вы можете попробовать сделать следующее, что приведет к ошибкам.
Session["UserName"] new StrangeDataClass(); //Uh Oh, that's not a string.
string theUserName = (string)Session["UserName"]; //unexpected behaviour based on StrangeDataClass.ToString() implementation.
Чтобы обойти эту проблему, вы должны сделать следующее:
string theUserName = Session["UserName"] as string;
if (string != null)
//The cast worked...
else
//The cast failed, (or the string stored in session was null)
Имея пользовательский объект Логин слегка решает эту проблему, потому что вы должны были бы только один объект, чтобы беспокоиться о том, и один актерский состав. Вы также можете легко расширить объект входа в систему с дополнительной информацией и все равно не должны делать никаких приемов.
Кто вам это сказал? В каком контексте именно - выше? У вас есть ссылка на страницу, которая говорит об этом? – Oded 2010-11-24 13:17:09
Когда я был в колледже, один из моих профессоров сказал мне .. что-то не так или нечувствительно? – Novice 2010-11-24 13:18:14