Спонсор: Microsoft
Опубликован: 14.11.2006 | Доступ: свободный | Студентов: 5821 / 513 | Оценка: 4.18 / 3.74 | Длительность: 16:37:00
ISBN: 978-5-9556-0085-7
Лекция 17:

Локализация проектов. Аутентификация пользователей

< Лекция 16 || Лекция 17: 12345 || Лекция 18 >

Элементы управления группы Login

Мы уже создавали формы регистрации. Это было только упражнение, так как элементы управления этой группы могут брать на себя регистрацию и авторизацию пользователей, восстановления пароля и другие функции, взаимодействуя при этом с системой Membership и Roles. Группа Login находится в панели инструментов.

Элемент управления LoginName позволяет показать имя пользователя:

Заходите еще, <asp:LoginName ID="FCLoginName" Runat="server" />

Отображаемый текст можно форматировать с помощью FormatString:

<asp:LoginName ID="HelloLoginName" Runat="server" FormatString="Hello, {0}" />.</p>

LoginStatus — это умный элемент управления. Если пользователь не аутентифицирован, отображается гиперссылка Login на страницу входа на сайт. Если пользователь авторизован, это ImageButton с командой Logout. Если ее нажать, то пользователь выходит из системы. Текст ссылок можно менять в свойствах LoginText и LogoutText или использовать изображения:

<asp:LoginStatus ID="LoginStatus1" runat="server" 
LoginText="Вход" LogoutText="Выход" />
  <asp:LoginStatus ID="LoginStatus2" runat="server" 
LogoutAction="Redirect" LogoutPageUrl="~/Default.aspx" 
LoginImageUrl="~/Images/arrow_next.gif" 
LogoutImageUrl="Images/arrow_prev.gif" />

Нажатие на ссылку Logout в этом случае перенаправит пользователя на страницу Default.aspx.

Элемент управления LoginView состоит из двух шаблонов: AnonymousTemplate и LoggedInTemplate. Который из них используется для отображения, зависит от того, просматривает ли страницу анонимный пользователь или авторизованный. На странице default.aspx Starter Kit это единственный элемент на странице Registration.aspx:

<asp:loginview id="LoginArea" runat="server">
    <AnonymousTemplate>
        <asp:login id="Login1" runat="server">
            <layouttemplate>
                <div class="login">
                    <h4>Login to Site</h4>
  <asp:label runat="server" id="UserNameLabel" CssClass="label" 
associatedcontrolid="UserName">User Name</asp:label>
  <asp:textbox runat="server" id="UserName" cssclass="textbox" 
accesskey="u" />
  <asp:requiredfieldvalidator runat="server" id="UserNameRequired" 
controltovalidate="UserName" validationgroup="Login1" errormes-
sage="User Name is required." tooltip="User Name is required." 
>*</asp:requiredfieldvalidator>
  <asp:label runat="server" id="PasswordLabel" CssClass="label" 
associatedcontrolid="Password">Password</asp:label>
  <asp:textbox runat="server" id="Password" textmode="Password" 
cssclass="textbox" accesskey="p" />
  <asp:requiredfieldvalidator runat="server" id="PasswordRequired"
controltovalidate="Password" validationgroup="Login1" 
tooltip="Password is required." >*</asp:requiredfieldvalidator>
  <div><asp:checkbox runat="server" id="RememberMe" text="Remember 
me next time"/></div>
  <asp:imagebutton runat="server" id="LoginButton" 
CommandName="Login" AlternateText="login" skinid="login" 
CssClass="button"/> or
  <a href="register.aspx" class="button"><asp:image id="Image1" 
runat="server" AlternateText="create a new account" skinid="cre-
ate"/></a>
  <p><asp:literal runat="server" id="FailureText" enableview-
state="False"></asp:literal></p>
                </div>
            </layouttemplate>
        </asp:login>
    </anonymoustemplate>
    <LoggedInTemplate>
       <h4><asp:loginname id="LoginName1" runat="server" format-
string="Welcome {0}!" /></h4>
    </LoggedInTemplate>
    </asp:loginview>

Анонимному пользователю предоставляется возможность зайти или зарегистрироваться, а авторизованный видит приветствие со своим именем.

Кроме того, с помощью <RoleGroups> можно создавать шаблоны, которые будут показаны пользователям с определенными ролями:

<RoleGroups>
        </asp:RoleGroup>
        <asp:RoleGroup Roles="Moderator">
            <ContentTemplate>
Вы можете удалять чужие сообщения.
            </ContentTemplate>
        </asp:RoleGroup>
        <asp:RoleGroup Roles="ClubMember">
            <ContentTemplate>
Вы можете заходить в клубный форум.
            </ContentTemplate>
    </RoleGroups>

Шаблоны групп просматриваются по порядку, и показывается тот из них, что найден первым из групп, в которые входит пользователь. Например, если он принадлежит к группам Moderator и ClubMember, будет показан шаблон Moderator. Роли можно перечислять через запятую, тогда шаблон применим ко всем указанным группам:

<asp:RoleGroup Roles="Moderator, Administrator">

Остальные элементы управления этой группы — формы и мастера — Login, PasswordRecovery, ChangePassword.

CreateUserWizard позволяет создавать пользователей, используя службу Membership. Естественно, в нем происходит валидация введенных данных. Например, длина пароля должна быть не меньше 7 знаков и в нем должен присутствовать хотя бы один символ — не буква и не цифра. Обязательно заполнение контрольного вопроса и ответа, по которым можно будет восстановить пароль, если он забыт, или изменить пароль:

ChangeUser
< Лекция 16 || Лекция 17: 12345 || Лекция 18 >
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319

Анна Малова
Анна Малова
Азербайджан, Баку
Дмитрий Крюков
Дмитрий Крюков
Россия, Москва