НЕ ПОВЫШАТЬ КОЛЕСО
Редактировать: сохранение идентификатора пользователя - вам не нужно. Вы можете получить его от 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 (Ресурсу), вы можете предоставить ресурс непосредственно пользователю или, если есть несколько пользователей, которые должны иметь доступ к этому ресурсу, и эти пользователи образуют естественную группу, затем создайте это group, предоставьте ресурс группе и добавьте пользователя в группу.
Затем вы можете получить доступ к User.Resources по идентификатору ресурса или защитить целую страницу, используя
if(!User.IsInRole("RoleName"))
{
//redirect to access denied page
}
В модели провайдера доступно много хороших вещей.
Редактировать: Что нужно знать, если вы решите сохранить информацию о своих пользователях в профиле: реализация ProfileProvider по умолчанию не особенно хороша. Скотт Гатри написал хорошую статью о провайдере на основе таблиц, которая лучше: http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx