Es de todos modos hay que detectar cuando un usuario inicia sesión si ya hay otra sesión con el mismo nombre de usuario, y le bloquear el registro de nuevo o enviarle un mensaje?

OriginalEl autor ryudice | 2010-05-27

5 Comentarios

  1. 16

    Siempre se podía implementar los eventos mundiales.asax.

    Implementar Application_Start() para la instalación de un Sistema.Las colecciones.Diccionario (o en su preferencia) y la tienda que en la Aplicación de[] de la colección, cuando un usuario logsin, añada el nombre de usuario. Quitar de la colección en Session_End(). Recuerde utilizar el ‘bloqueo’ palabra clave ‘ mientras se trabaja con la colección 🙂

    Divertirse!

    Ejemplo:

    [page.aspx]
    public partial class page : System.Web.UI.Page {
    protected bool Login(string userName) {
    System.Collections.Generic.List<string> d = Application["UsersLoggedIn"]
    as System.Collections.Generic.List<string>;
    if (d != null) {
    lock (d) {
    if (d.Contains(userName)) {
    //User is already logged in!!!
    return false;
    }
    d.Add(userName);
    }
    }
    Session["UserLoggedIn"] = userName;
    return true;
    }
    protected void Logout() {
    Session.Abandon();
    }
    }
    [global.asax]
    <%@ Application Language="C#" %>
    <script RunAt="server">
    void Application_Start(object sender, EventArgs e) {
    Application["UsersLoggedIn"] = new System.Collections.Generic.List<string>();
    }
    void Session_End(object sender, EventArgs e) {
    //NOTE: you might want to call this from the .Logout() method - aswell -, to speed things up
    string userLoggedIn = Session["UserLoggedIn"] == null ? string.Empty ? (string)Session["UserLoggedIn"];
    if (userLoggedIn.Length > 0) {
    System.Collections.Generic.List<string> d = Application["UsersLoggedIn"] 
    as System.Collections.Generic.List<string>;
    if (d != null) {
    lock (d) {
    d.Remove(userLoggedIn);
    }
    }
    }
    }
    </script>   
    si eres el uso de sesiones para el control de la autorización, que es…
    He probado esta solución, pero no puedo acceder a la Aplicación en Session_End porque mi HttpContext.La corriente es nula. ¿Cómo puedo acceder a él?
    Si el usuario cierra el navegador sin necesidad de hacer clic en cerrar sesión, y vuelva a intentar iniciar sesión con el mismo nombre de usuario, el usuario no será capaz de iniciar sesión. ¿Cómo podemos arreglar eso?
    esto es bastante viejo código, pero me gustaría modificar en «// el Usuario ya está registrado en el!!!» para hacer «Session[«UserLoggedIn»] = nombre de usuario; return true;» – que debe resolver.
    ah yo lo veo, y ese es el punto con el código 🙂 supongo que también podría guardar la IP? de la sesión de usuario en el UsersLoggedIn colección (es un <string[]> colección o algo), y el permitir el inicio de sesión de nuevo si ese partido? O tal vez añadir un poco ingenioso <body onunload=.. código.

    OriginalEl autor Fredrik Johansson

  2. 3

    He implementado esta en que cuando un usuario inicia una sesión en la que fija una bandera en la base de datos que se registran. Era un entero que representa cuántas veces se registran. Hemos permitido que dos. A continuación, acaba de comprobar que a la hora de validar el usuario.

    Y ¿cómo se determina Si un usuario ha iniciado sesión? También existen conexiones que el tiempo de espera. Por lo que necesita de al menos una rutina de correr en algún lugar de disminuir entero
    Sí que era un problema. Creo que hemos tenido código javascript que se ejecuta congruente con el tiempo de espera de sesión y se le preguntaba si quería permanecer conectado, si no hay respuesta, a continuación, podría disminuir el recuento. También tenían la misma cosa en la sesión final del evento. También teníamos un trabajo que reiniciar el conteo a 0 en el medio de la noche.

    OriginalEl autor nportelli

  3. 2

    Puede, al mantener un registro de los usuarios conectados, en su mundial.asax mediante el objeto de la Aplicación.

    En el Session_Start método o su método de inicio de sesión, usted puede comprobar si el usuario se almacena en el objeto de la Aplicación.

    Sobre la Session_End método o en su método de cierre de sesión, usted tendrá que quitar el usuario de la Aplicación objeto.

    He probado esta solución, pero no puedo acceder a la Aplicación en Session_End porque mi HttpContext.La corriente es nula. ¿Cómo puedo acceder a él?

    OriginalEl autor Ed B

  4. 1

    No la guarde en el DB si usted no puede identificar al usuario cerrar la sesión de evento (pueden hacer clic en cerrar sesión, cerrar la pestaña, cerrar todo el navegador, o puede simplemente apagar el ordenador…).
    El uso de la sesión para hacer la misma comprobación en su lugar.

    OriginalEl autor Bolu

  5. 0

    Se puede almacenar en el SessionID de un usuario en una base de datos. En cada inicio de sesión, almacenar una combinación de nombre de usuario Único y SessionID en la base de datos. En la masterpage de incluir la consulta a la base de datos, para comprobar si el último inicio de sesión para el que actualmente se utiliza nombre de usuario era de la misma sesión. Si no, abandonar la sesión y redirigir a la página de inicio de sesión.

    El comportamiento que he publicado debe salir el segundo usuario. Usted puede cambiar de Sesión.Abandonar a su conducta deseada

    OriginalEl autor citronas

Dejar respuesta

Please enter your comment!
Please enter your name here