Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
RicardoGaio

Resgatar o utilizador online e mostrar numa label

Recommended Posts

RicardoGaio

Viva!

A minha duvida neste momento prende-se com o facto de saber como "apanhar" o nome de utilizador que está online e mostrá-lo numa label inserida na masterpage.

Estou num domínio e estou a usar asp.net com VB.

Se criar uma página "avulso", funciona bem:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Testemostrauser.aspx.vb" Inherits="Testemostrauser" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Label ID="Label1" runat="server"></asp:Label>
    </form>
</body>
</html>

Partial Class Testemostrauser
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Label1.Text = User.Identity.Name
    End Sub
End Class

Se colocar o esse mesmo código na masterpage.vb dá erro:

Imports Microsoft.VisualBasic.ApplicationServices
Imports System.Web.Security
Partial Class NovaMasterPage_VB
    Inherits System.Web.UI.MasterPage
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        lblUtilizador.Text = User.Identity.Name
    End Sub
End Class

O erro que dá é (aparece sublinhado às ondas e deixando o rato em cima mostra o seguinte) : 'Identity' is not a member of 'Microsoft.VisualBasic.ApplicationServices.User'

Como posso/devo contornar isto?

Todas as ajudas são bem vindas! :D


Um abraço, Ricardo

Share this post


Link to post
Share on other sites
paulo silva

 Imports Microsoft.VisualBasic.ApplicationServices

Boas,

podes contornar utilizando uma variável de sessão, Atribuis na altura do login o nome do utilizador e preenches na variável de sessão.

Então depois consegues atribuir o nome à label.

É uma maneira de contornar a situação.

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
RicardoGaio

Obrigado, Paulo, pela dica! :)

Acho estranho, porque ao usar o

Label1.Text = User.Identity.Name

numa página "normal" funciona bem, se usar esse código na master.vb dá aquele erro... :D

Acabei por fazer assim, na MasterPage.master.vb:

Partial Class MasterPage
    Inherits System.Web.UI.MasterPage

    Function GetUserName() As String
        Dim parts() As String = Split(My.User.Name, "\")
        Dim username As String = parts(1)
        Return username
    End Function

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        lblUtilizador.Text = GetUserName()
    End Sub
End Class

(Adaptado daqui: http://msdn.microsoft.com/en-us/library/ts4s4536.aspx)

Funciona e muito bem!  :cheesygrin:


Um abraço, Ricardo

Share this post


Link to post
Share on other sites
RicardoGaio

Viva!

Prosseguindo a saga (ou chaga) que referi aqui: http://www.portugal-a-programar.pt/index.php?showtopic=37665

Usando a função acima, funciona tudo bem na máquina de desenvolvimento ("Saca" o utilizador que iniciou sessão na máquina, (Utilizador de ActiveDirectory)). Correndo a partir do servidor, não aparece nenhum nome de utilizador...!  :wallbash:

Já alterei para isto:

Imports Microsoft.VisualBasic.ApplicationServices
Imports System.Web.Security

Partial Class NovaMasterPage_VB
    Inherits System.Web.UI.MasterPage

    Dim User_Em_Sessao As String = HttpContext.Current.User.Identity.Name.ToString()

    Private Function ExtractUserName(ByVal path As String) As String
        Dim userPath As String() = path.Split(New Char() {"\"c})
        Return userPath(userPath.Length - 1)
    End Function

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                lblUtilizador.Text = ExtractUserName(User_Em_Sessao)
    End Sub
End Class

Mas o problema mantém-se... :)

Alguém tem mais algumas sugestões...?


Um abraço, Ricardo

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.