НЕ РЕИНВЕНТЕНТ КОЛЕСА
Редактировать: Сохранение UserId - вам не обязательно. Вы можете получить его от MembershipProvider в любое время до тех пор, пока пользователь вошел в систему, конечно:
MembershipUser user = Membership.GetUser();
Guid UserID = user.ProviderUserKey;
Звуки для меня, как вы должны реализовать поставщика членства ASP.NET. Есть чтения этого ресурса: http://odetocode.com/articles/427.aspx
Кроме того, хорошая серия от Скотта Гатри: http://weblogs.asp.net/scottgu/archive/2006/02/24/ASP.NET-2.0-Membership_2C00_-Roles_2C00_-Forms-Authentication_2C00_-and-Security-Resources-.aspx
В общем, этот подход: Используйте проверку подлинности форм для проверки, которые пользователь. Это защищенная сторона проверки подлинности. То есть, определение пользователя - это тот, кто, как они говорят, обычно, с именем пользователя и паролем.
Вторая часть безопасности - это авторизация, которая происходит, когда вы знаете, кто такой пользователь. В основном это определение того, к каким ресурсам имеет доступ аутентифицированный пользователь. Зрелая система будет включать в себя следующие объекты:
User: may contain extended profile information captured on registration
Resource: a page or other resource that can be restricted.
Group: a group of users who can access resources due to their group membership (groups are granted resource access)
Role: a type of user such as Administrator/Developer/Salesperson.
Таким образом, чтобы предоставить пользователю доступ к routeid 854 (ресурса) можно предоставить ресурс непосредственно пользователю или, если есть несколько пользователей, которые должны иметь acceses к этот ресурс и эти пользователи образуют естественную группу, затем создайте эту группу, предоставите ресурс группе и добавьте пользователя в группу.
Тогда вы можете получить доступ к User.Resources с помощью идентификатора ресурса, или вы можете защитить целую страницу с помощью
if(!User.IsInRole("RoleName"))
{
//redirect to access denied page
}
Есть много хороших вещей, доступных с помощью модели поставщика.
Редактировать: Что-то необходимо знать, если вы решили сохранить информацию о профиле ваших пользователей. Реализация ProfileProvider по умолчанию не особенно хороша. Скотт Гатри написал хорошую статью о поставщике на основе таблицы, который лучше: http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx
Я использую поставщик ASP.NET MemberShip для входа в систему. Но приятно видеть информацию о пользовательских данных. :-) Продолжая читать об этом .. – janhartmann
Хороший материал: здесь также есть хороший код примера: http://asp.dotnetheaven.com/aspnet/doc/security/membership.aspx#auth –
Что касается сохранения UserId , посмотрите на Редактировать в верхней части моего ответа. –