3

J'ai une application Web qui utilise une base de données SQL Server 2005.SQL Server 2005/2008: identifie l'utilisateur actuel

Mon problème est, que l'application n'a aucune gestion de rôle. Ainsi, l'application accède toujours à la base de données avec un utilisateur par défaut. Mais maintenant je dois enregistrer et accéder à une valeur uniquement pour l'utilisateur actuel.

Y at-il un moyen de le faire? Peut-être quelque chose comme une session sur le serveur web? Le meilleur moyen serait, s'il y a une possibilité d'accéder à l'identifiant de session en cours du serveur Web à partir de T-SQL.

Est-ce que quelqu'un comprend mon problème? :)

Répondre

5

Permet une valeur fournie par le système pour la connexion en cours à insérer dans une table

DECLARE @sys_usr char(30); 
SET @sys_usr = SYSTEM_USER; 
SELECT 'The current user is: '+ @sys_usr; 
GO 

de MSDN

À mon avis, il est préférable de ne pas faire . Une autre façon: envoyer à l'utilisateur en cours de procédure stockée de serveur web:

command.CommandText = "EXEC mySP @user"; 
command.Parameters.Add("@user").Value = ((YourOwnUserClass)Session["user"]).Name; 

// or System.Web.HttpContext.Current.User.Identity.Name; to use built-in 
// from web page it becomes this.User.Identity.Name; 
+0

Salut. Sous-jacente Thats pour ne pas résoudre mon problème, car l'application Web accède à la base de données toujours avec la même connexion. Donc, si trois utilisateurs accèdent à l'application en même temps, ils utilisent tous le même login pour accéder à la base de données – Torben

+0

Salut, merci, on dirait que c'est le seul moyen ... mais c'est trop pour changer :) – Torben

+0

@Torben H. : Nice qui a aidé :) Malheureusement, ce n'est que ce que je peux suggérer – abatishchev

-1

Si vous utilisez l'authentification Windows intégrée au lieu des comptes SQL:

  1. Offrir des autorisations d'objet de schéma à un groupe Windows , non un utilisateur. Ajoutez ensuite tous les utilisateurs de votre application à ce groupe.
  2. Utilisez le haut-SUSER_NAME() fonction pour récupérer le nom d'utilisateur Windows (en format loginDomain\userName.
+1

En fait, cela ne fonctionnera pas, il suffit de relire la question. Utilisez la suggestion de @ abatishchev pour passer l'utilisateur basé sur la session à la base de données. – devstuff

Questions connexes