Pergunta

Estou tendo problemas usando um LoginView para o que eu preciso. Alguém pode me dizer se eu posso fazer isso em um LoginView (e como) ou se eu precisar usar código.

Eu tenho dois papéis - usuários e de administrador. Eu quero mostrar dinamicamente ligações com base na função. Vou escrever o que eu quero em uma instrução if porque é mais fácil de explicar:

if (role = Administrator) //Display only if administrator.
   Show Hyperlink 1
   Show Hyperlink 2
else
   if (role = User) //Display only if user.
      Show Hyperlink 3
      Show Hyperlink 4
   endif
   //Display these if a user or if non-authenticated user...
   Show Hyperlink 5
   Show Hyperlink 6
   Show Hyperlink 7 
endif
Foi útil?

Solução

Tente algo como isso, ele usa o propriedade RoleGroups . Você também pode especificar o RoleGroup para o usuário, mas se você usar o LoggedInTemplate que terá efeito para todos os usuários conectados em que não temos um grupo no RoleGroup. Finalmente, não há realmente uma maneira de ter um modelo compartilhado, como o cenário que você descreveu com Usuários / Anonymous, assim você pode ter que duplicar. Outra possibilidade é que você não incluí-los em sua LoginView e mostrá-los para os administradores também.

<asp:LoginView runat="server" ID="LoginView">
    <AnonymousTemplate>
        <asp:HyperLink runat="server" ID="Link5" />
        <asp:HyperLink runat="server" ID="Link6" />
        <asp:HyperLink runat="server" ID="Link7" />
    </AnonymousTemplate>
    <LoggedInTemplate>
        <asp:HyperLink runat="server" ID="Link3" />
        <asp:HyperLink runat="server" ID="Link4" />
        <asp:HyperLink runat="server" ID="Link5" />
        <asp:HyperLink runat="server" ID="Link6" />
        <asp:HyperLink runat="server" ID="Link7" />
    </LoggedInTemplate>
    <RoleGroups>
        <asp:RoleGroup Roles="Administrator">
            <ContentTemplate>
                <asp:HyperLink runat="server" ID="Link1" />
                <asp:HyperLink runat="server" ID="Link2" />
            </ContentTemplate>
        </asp:RoleGroup>
    </RoleGroups>
</asp:LoginView>

Outras dicas

Você certamente pode conseguir o que você está procurando com o controle ASP.NET LoginView.

Você vai querer olhar para o " RoleGroups " propriedade do controle LoginView, pois isso permite que você crie ContentTemplates que diferem com base no papel que o usuário autenticado pertence.

Por exemplo:

<form id="form1" runat="server">
   <asp:LoginView id="LoginView1" runat="server">
      <RoleGroups>
         <asp:RoleGroup Roles="administrator">
            <ContentTemplate>
               <ul>
                  <li>Hyperlink 1</li>
                  <li>Hyperlink 2</li>
               </ul>
            </ContentTemplate>
         </asp:RoleGroup>
         <asp:RoleGroup Roles="user">
            <ContentTemplate>
               <ul>
                  <li>Hyperlink 3</li>
                  <li>Hyperlink 4</li>
               </ul>
            </ContentTemplate>
          </asp:RoleGroup>
      </RoleGroups>
      <AnonymousTemplate>
         <ul>
            <li>Hyperlink 5</li>
            <li>Hyperlink 6</li>
         </ul>
      </AnonymousTemplate>
   </asp:LoginView>
</form>

Usando este mecanismo permite que você defina o seu conteúdo para cada papel meramente declarativa no mark-up ASP. Alternativamente, você sempre pode fazer isso no código do lado do servidor, e pode, em seguida, mostrar / ocultar quaisquer controles (que runat = "server") dependendo de qualquer critério que você gosta. Por exemplo, como uma alternativa para o controle LoginView, você poderia usar o MultiView / View controles.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top