none
Autenticacion de Usuarios RRS feed

  • Pregunta

  • Estoy creando una aplicacion Web Asp.Net y evito la autenticacion que trae por defecto y autentico el usuario mediante una conexion a una bd externa y todo funciona bien.

    Ahora no logro como re-hacer la pagina SiteMaster y que utlize el siguiente codigo:

    <LoggedInTemplate>
                                <ul class="nav navbar-nav navbar-right">
                                    <li><a runat="server" href="~/Account/Manage" title="Manage your account">Hello, <%: Context.User.Identity.GetUserName()  %>!</a></li>
                                    <li>
                                        <asp:LoginStatus runat="server" LogoutAction="Redirect" LogoutText="Log off" LogoutPageUrl="~/" OnLoggingOut="Unnamed_LoggingOut" />
                                    </li>
                                </ul>
                            </LoggedInTemplate>

    Si utilizo la autenticacion por defecto, utilizando la bd a nivel local si esto funciona, pero como lo hago en forma diferente, no entiendo como llamar a la accion que produce este codigo.

    domingo, 21 de agosto de 2016 17:13

Respuestas

  • Los controles de Login, internamente interactúan con el subsistema de Membership. Las clases de Membership puedes fácilmente adaptarlas para que trabajen con otra base de datos. Si es SQL Server y te vale el mismo esquema (las mismas columnas en la tabla de usuarios), basta con que cambies la cadena de conexión usando el web.config (y crear a mano la DB con el aspnet_regsql). Si necesitas otro esquema, u otro tipo de servidor de BD, lo que se hace es crear una clase heredada de MembershipProvider y dentro meter el código que valida los usuarios (que seguramente será muy parecido al que ya tienes). Después habilitas esa clase desde el web.config, y ya está, todos los controles de Login funcionan contra tu clase en lugar de la predeterminada. Documentación aquí:

    https://msdn.microsoft.com/en-us/library/aa478949.aspx

     
    • Propuesto como respuesta Sergio ParraModerator domingo, 21 de agosto de 2016 18:11
    • Marcado como respuesta eduepa lunes, 22 de agosto de 2016 15:50
    domingo, 21 de agosto de 2016 17:39
  • Si cree otra cadena de conexion a otra BD y todo funciona perfecto. Lo que no entiendo es donde dices:

    Después habilitas esa clase desde el web.config, y ya está, todos los controles de Login funcionan contra tu clase en lugar de la predeterminada

    como realizar eso ?

    • Marcado como respuesta eduepa lunes, 22 de agosto de 2016 15:50
    lunes, 22 de agosto de 2016 1:05
  • Después habilitas esa clase desde el web.config

    como realizar eso ?

    Busca la sección membership dentro del web.config y añade o modifica dentro la sección "providers":

        <membership defaultProvider="MiProveedor">
          <providers>
            <clear />
              <add name="MiProveedor"
                type="MiEspacioDeNombres.MiClase"
                otroparametro="LoQueHagaFalta" />
          </providers>
        </membership>
    

    Donde dice MiespacioDeNombres.MiClase pondrías esa clase que antes heredaste de Membership, y donde dice otroparametro="LoQueHagaFalta", ahí añadirías en forma de atributos XML cualesquiera parámetros que hayas decidido añadirle a tu clase, como por ejemplo la cadena de conexión si es que optas por pasarla desde el web.config en lugar de dejarla escrita dentro del fuente de MiClase.
    • Marcado como respuesta eduepa lunes, 22 de agosto de 2016 15:50
    lunes, 22 de agosto de 2016 6:06
  • Estoy trabajando con VB2015 y realmente hace cosas que no entiendo, inexplicables y hasta ineccesarias, al menos para lo que yo necesito. Pero bueno, buscare algo mas sencillo y menos "rebuscado". La autenticacion del usuario, solo la necesito si realiza determinada accion y no cada vez que se abra la/s pagina haga un recorrido por clases, funciones, etc.

    Gracias de todos modos

    • Marcado como respuesta eduepa lunes, 22 de agosto de 2016 15:50
    lunes, 22 de agosto de 2016 15:49

Todas las respuestas

  • Los controles de Login, internamente interactúan con el subsistema de Membership. Las clases de Membership puedes fácilmente adaptarlas para que trabajen con otra base de datos. Si es SQL Server y te vale el mismo esquema (las mismas columnas en la tabla de usuarios), basta con que cambies la cadena de conexión usando el web.config (y crear a mano la DB con el aspnet_regsql). Si necesitas otro esquema, u otro tipo de servidor de BD, lo que se hace es crear una clase heredada de MembershipProvider y dentro meter el código que valida los usuarios (que seguramente será muy parecido al que ya tienes). Después habilitas esa clase desde el web.config, y ya está, todos los controles de Login funcionan contra tu clase en lugar de la predeterminada. Documentación aquí:

    https://msdn.microsoft.com/en-us/library/aa478949.aspx

     
    • Propuesto como respuesta Sergio ParraModerator domingo, 21 de agosto de 2016 18:11
    • Marcado como respuesta eduepa lunes, 22 de agosto de 2016 15:50
    domingo, 21 de agosto de 2016 17:39
  • Si cree otra cadena de conexion a otra BD y todo funciona perfecto. Lo que no entiendo es donde dices:

    Después habilitas esa clase desde el web.config, y ya está, todos los controles de Login funcionan contra tu clase en lugar de la predeterminada

    como realizar eso ?

    • Marcado como respuesta eduepa lunes, 22 de agosto de 2016 15:50
    lunes, 22 de agosto de 2016 1:05
  • Después habilitas esa clase desde el web.config

    como realizar eso ?

    Busca la sección membership dentro del web.config y añade o modifica dentro la sección "providers":

        <membership defaultProvider="MiProveedor">
          <providers>
            <clear />
              <add name="MiProveedor"
                type="MiEspacioDeNombres.MiClase"
                otroparametro="LoQueHagaFalta" />
          </providers>
        </membership>
    

    Donde dice MiespacioDeNombres.MiClase pondrías esa clase que antes heredaste de Membership, y donde dice otroparametro="LoQueHagaFalta", ahí añadirías en forma de atributos XML cualesquiera parámetros que hayas decidido añadirle a tu clase, como por ejemplo la cadena de conexión si es que optas por pasarla desde el web.config en lugar de dejarla escrita dentro del fuente de MiClase.
    • Marcado como respuesta eduepa lunes, 22 de agosto de 2016 15:50
    lunes, 22 de agosto de 2016 6:06
  • Estoy trabajando con VB2015 y realmente hace cosas que no entiendo, inexplicables y hasta ineccesarias, al menos para lo que yo necesito. Pero bueno, buscare algo mas sencillo y menos "rebuscado". La autenticacion del usuario, solo la necesito si realiza determinada accion y no cada vez que se abra la/s pagina haga un recorrido por clases, funciones, etc.

    Gracias de todos modos

    • Marcado como respuesta eduepa lunes, 22 de agosto de 2016 15:50
    lunes, 22 de agosto de 2016 15:49