Определяет, следует ли допустить опции доступности для данного пользователя на всех узлах, являющимися членами Microsoft Passport
BDay_precision
Определяет точность атрибута Birthdate
Birthdate
Содержит дату или год рождения пользователя, в зависимости от значения атрибута BDay_precision
City
Идентификатор GeoID, хранящий информацию о местоположении пользователя
Country
Код страны пользователя по стандарту ISO 3166
Directory
Пока не используется
Firstname
Имя пользователя
Flags
Содержит опции пользовательского профиля
Gender
Определяет пол пользователя
Lang_Preference
Идентификатор LCID национального языка пользователя
Lastname
Фамилия пользователя
MemberIDHigh
Уникальный идентификатор пользователя PUID высокого уровня
MemberIDLow
Уникальный идентификатор пользователя PUID низкого уровня
MemberName
Содержит имя пользователя и имя домена, разделённые знаком “@”
Nickname
Дружелюбное обращение к пользователю
Occupation
Содержит некоторую дополнительную информацию о пользователе, в частности, род деятельности
PostalCode
Почтовый индекс пользователя в США или в другой стране
PreferredEmail
Адрес электронной почты пользователя
ProfileVersion
Версия профиля пользователя
Region
Идентификатор GeoID, обозначающий место проживания пользователя в стране
TimeZone
Определяет часовой пояс, в котором проживает пользователь
Wallet
Определяет, хранит ли пользователь паспорт в бумажнике
Табл. 1 – Опции профиля пользователя
Для получения доступа ко всем этим атрибутам есть два способа: методом GetProfileObject объекта PassportIdentity и через свойство Item того же объекта. Следующий листинг, написанный на языке C#, демонстрирует оба эти способа в действии: default.aspx.cs:
using System.Web.Security; … private void Page_Load(object sender, System.EventArgs e) { PassportIdentity id; id = (PassportIdentity)User.Identity;
Теперь давайте вернёмся к нашему проекту с элементом управления passport.ascx и доведём страницу регистрации до ума. Для этого измените файлы login.aspx и login.aspx.vb следующим образом: login.aspx:
Protected WithEvents lbl As System.Web.UI.WebControls.Label Protected WithEvents lblLogin As System.Web.UI.WebControls.Label Protected WithEvents lblPUID As System.Web.UI.WebControls.Label Protected WithEvents lblFName As System.Web.UI.WebControls.Label Protected WithEvents lblLName As System.Web.UI.WebControls.Label Protected WithEvents lblEmail As System.Web.UI.WebControls.Label
#Region Web Form Designer Generated Code
This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
NOTE: The following placeholder declaration is required by the Web Form Designer. Do not delete or move it. Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init CODEGEN: This method call is required by the Web Form Designer Do not modify it using the code editor. InitializeComponent() End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If User.Identity.IsAuthenticated Then Если пользователь зарегистрирован, то создаём объект PassportIdentity и выводим информацию о нём Dim id As PassportIdentity = CType(User.Identity, PassportIdentity)
Скрываем сообщение регистрации lblLogin.Visible = False Else Если нет, то предлагаем ему зарегистрироваться и скрываем таблицу lblLogin.Visible = True lbl.Visible = False End If End Sub End Class
Обратите внимание, что в предыдущем примере одним из полей таблицы было поле PUID, и данные в него мы загружали из свойства User.Identity.Name. Это свойство хранит в себе уникальный идентификатор Passport User ID конкретного пользователя, и, если вам нужно будет получить данные на определённого пользователя, то для его нахождения и обозначения нужно использовать именно это свойство, а не, скажем, атрибут профиля пользователя MemberName. Не смотря на то, что данное свойство Name находится в объекте User.Identity, а не в PassportIdentity, оно всё равно содержит в себе нужный вам PUID, поскольку объект User.Identity содержит в себе информацию о текущем зарегистрированном пользователе и соответственно значение его свойства Name определяется способом аутентификации.
На этом мы завершаем обзор средств аутентификации в среде ASP.NET. Чтобы на пути освоения новых технологий вы всегда могли чувствовать поддержку за плечами, то в помощь вам необъятные ресурсы глобальной сети Интернет, и материалы библиотеки MSDN. В следующей части статьи мы взглянем на мир информационной безопасности с ещё одной стороны – со стороны авторизации.