Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Средства безопасности ASP.NET. Аутентификация

Источник: realcoding.net

[3 страница]
Имя атрибутаОписание
AccessibilityОпределяет, следует ли допустить опции доступности для данного
пользователя на всех узлах, являющимися членами 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;

   
Response.Write(id[Firstname] + <br>);
   
Response.Write(id.GetProfileObject(Lastname) + <br>);
}

Теперь давайте вернёмся к нашему проекту с элементом управления passport.ascx и доведём страницу регистрации до ума. Для этого измените файлы login.aspx и login.aspx.vb следующим образом:
login.aspx:

<%@ Page Language=vb AutoEventWireup=false Codebehind=login.aspx.vb Inherits=PassAuth.WebForm1%>
<%@
Register TagName=passport TagPrefix=ctl src=passport.ascx%>
<!
DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN>
<
html>
    <
head>
        <
title>LogIn</title>
        <
meta name=GENERATOR content=Microsoft Visual Studio .NET 7.1>
        <
meta name=CODE_LANGUAGE content=Visual Basic .NET 7.1>
        <
meta name=vs_defaultClientScript content=JavaScript>
        <
meta name=vs_targetSchema content=http://schemas.microsoft.com/intellisense/ie5>
    </
head>
    <
body MS_POSITIONING=GridLayout>
        <
form id=Form1 method=post runat=server>
            <
p><asp:Label ID=lblLogin Runat=server>Please login...</asp:Label>
                <
ctl:passport id=pas runat=server/></p>
            
            <
asp:Label ID=lbl Runat=server Visible=False>
                <
table border>
                    <
tr>
                        <
th>PUID:</th>
                        <
td><asp:Label ID=lblPUID Runat=server/></td>
                    </
tr>
                    <
tr>
                        <
th>Firstname:</th>
                        <
td><asp:Label ID=lblFName Runat=server/></td>
                    </
tr>
                    <
tr>
                        <
th>Lastname:</th>
                        <
td><asp:Label ID=lblLName Runat=server/></td>
                    </
tr>
                    <
tr>
                        <
th>E-mail:</th>
                        <
td><asp:Label ID=lblEmail Runat=server/></td>
                    </
tr>
                </
table>
            </
asp:Label>
        </
form>
    </
body>
</
html>

login.aspx.vb:

Imports System.Web.Security

Public
Class WebForm1
Inherits System
.Web.UI.Page

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)

lbl.Visible = True
lblPUID
.Text = User.Identity.Name
lblFName
.Text = id(Firstname)
lblLName.Text = id(Lastname)
lblEmail.Text = id(PreferredEmail)

Скрываем сообщение регистрации
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. В следующей части статьи мы взглянем на мир информационной безопасности с ещё одной стороны – со стороны авторизации.

Контакты
Редакция:
[0.001]