2010-04-22 12 views
8

Je crée une application ASP.NET MVC. En raison de l'autorisation complexe, j'essaie de créer mon propre système de connexion. Je n'utilise pas les fournisseurs d'appartenance ASP.NET et les classes associées)Suivi des utilisateurs connectés

Je suis capable de créer de nouveaux comptes dans la base de données avec des mots de passe hachés.

Comment puis-je savoir si un utilisateur est connecté?

Génère un nombre aléatoire long et le mettre avec l'ID utilisateur dans la base de données et un cookie suffisant?

+0

Votre anglais est très bon :) – roryf

+2

Si vous souhaitez personnaliser l'authentification ASP.NET, vous devez * utiliser * un fournisseur d'appartenances, même si vous devez tout écrire vous-même. http://blogs.teamb.com/craigstuntz/2009/09/09/38390/ –

Répondre

7

Après avoir validé les informations d'identification utilisateur, vous pouvez avoir un code comme:

public void SignIn(string userName, bool createPersistentCookie) 
{ 
    int timeout = createPersistentCookie ? 43200 : 30; //43200 = 1 month 
    var ticket = new FormsAuthenticationTicket(userName, createPersistentCookie, timeout); 
    string encrypted = FormsAuthentication.Encrypt(ticket); 
    var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted); 
    cookie.Expires = System.DateTime.Now.AddMinutes(timeout); 
    HttpContext.Current.Response.Cookies.Add(cookie); 
} 

Ainsi, votre code peut ressembler à ceci:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult LogOn(string userName, string passwd, bool rememberMe) 
{ 
    //ValidateLogOn is your code for validating user credentials 
    if (!ValidateLogOn(userName, passwd)) 
    { 
     //Show error message, invalid login, etc. 
     //return View(someViewModelHere); 
    } 

    SignIn(userName, rememberMe); 

    return RedirectToAction("Home", "Index"); 
} 

Dans les demandes ultérieures de l'utilisateur connecté, HttpContext.User .Identity.Name doit contenir le nom d'utilisateur de l'utilisateur connecté.

Cordialement!

+0

Wow, merci beaucoup! Très utile!!! –

+0

Très utile merci. Mais qu'est-ce que je fais quand je me déconnecte? – HelpASisterOut

+0

@HelpASisterOut FormsAuthentication.SignOut(); FormsAuthentication.RedirectToLoginPage() – uvita

Questions connexes