Actualmente estoy almacenando la cuenta de Windows de un usuario como nvarchar (10) en el servidor SQL, ¿es esta la forma correcta de almacenar los ID de usuario? ¿Cuál debería ser el tipo de datos? o debería incluso almacenar userids?¿Cómo debo almacenar el ID de usuario de Windows en la base de datos?
Respuesta
Las identidades de usuario de Windows NT se conocen como SID, a security-identifier. Su representación de cadena se especifica en SID String Format Syntax y la representación de mariscal se especifica en SID--Packet Representation. Si desea almacenar un SID en la base de datos, use la misma representación que el campo sys.databases.owner_sid
: varbinary (85). Para recuperar un SID de inicio de sesión use SUSER_SID
(que también devuelve ... varbinary(85)
).
ver específicamente no identidades tienda como nombres de usuario (o domain\user
[email protected]
) ya que estos cambios manera más frecuencia de lo esperado, especialmente en las grandes corporaciones. El mío cambió unas 5 veces en 10 años.
Esta es una pregunta muy compleja.
Técnicamente No almacene el nombre. almacenar la ID, que por cierto es un GUID por tipo de todos modos.
Eso significa que es seguro cuando, por ejemplo, cambiar el nombre de la cuenta y eso es lo que ocurre con las ventanas. ¿Has visto alguna vez cuando abres derechos en un archivo, demora un segundo para mostrar los nombres? Y muestra un número primero? Eso es porque Windows tarda un poco en obtener los nombres del controlador de dominio.
SIMPLE es almacenar el nombre de la cuenta, pero quiere decir que está "muerto" en un cambio de nombre, que debe ser bastante frecuencia, Otoh. Creo que la mayoría de las soluciones van para eso;)
"ID se' GUID' por tipo de todos modos." No necesariamente. Puede especificar 'SID' o' GUID'. Un 'GUID' será único en varios dominios si tiene una compañía tan grande, mientras que un' SID' no se garantiza que sea único en todos los dominios. Pero 'SID' es compatible con versiones anteriores de Windows NT. – GibralterTop
Al obtener la identificación de usuario actual (marcar HERE), se usa char(30)
.
Así, al menos, debería cambiar la longitud de 30!
Depende del tipo de datos en userid
si es una identificación de otra tabla en su base de datos, luego guárdelo según el tipo de datos en la tabla parant. si usa el ID de usuario de Windows, guárdelo como nvarchar, pero asegúrese de que el ID de usuario más loable esté alojado. como nvarchar (50)
o debería incluso tienda userIds
bien la creación de nueva cuenta en Stack overflow
. Acepta userids lo que significa que usa Passport Authentication
. Pero aún mantiene la información del usuario en la base de datos para la relación entre consulta/respuestas/comentarios/indicadores, etc.
¿Cuál debe ser el tipo de datos?
Bueno, depende de su requisito. En caso de idioma no inglés. Debe ser NVarchar(50)
- 1. almacenar ID de usuario en la sesión
- 2. ¿Debo almacenar ID/valores Enum en la base de datos o una enumeración C#?
- 3. ¿Cómo debo almacenar datos por usuario en WinForms?
- 4. ¿Almacenar imágenes de perfil de usuario en el disco o en la base de datos?
- 5. cómo almacenar datos en la base de datos en HTML5
- 6. ¿Debo almacenar estados de EE. UU. En mi base de datos o una matriz de PHP?
- 7. Almacenar objetos personalizados (Obj definido por el usuario) en la base de datos de SQLite Android
- 8. ¿Cómo almacenar el dinero del usuario en la base de datos?
- 9. Cómo almacenar objetos en la base de datos sqlite?
- 10. ¿Qué base de datos debo usar para almacenar registros y cómo debo usarlos?
- 11. Cómo almacenar campos de usuario personalizados en la base de datos
- 12. ¿Dónde debo almacenar la base de datos SQLite para mi aplicación de iPhone?
- 13. Almacenar datos de usuario en la aplicación de metro de Windows 8
- 14. ¿Cómo debo almacenar cadenas cortas de texto en una base de datos SQL Server?
- 15. Almacenar una estructura de directorio en la base de datos
- 16. Base de datos + Autenticación de Windows + Nombre de usuario/Contraseña?
- 17. ¿Cómo almacenar Euro Symbol en la base de datos mysql?
- 18. Cómo almacenar un árbol en la base de datos SQL
- 19. cómo almacenar contraseñas en la base de datos?
- 20. cómo almacenar valores BigInteger en la base de datos Oracle
- 21. Almacenar hora de fecha UTC en la base de datos
- 22. cómo almacenar video en la base de datos usando mysql?
- 23. Cómo obtener el ID de la base de datos desde un Id. De XML
- 24. Cómo almacenar imágenes en la base de datos SQLite
- 25. ¿Dónde debo almacenar los datos de mi aplicación?
- 26. mejor forma de almacenar relaciones de usuario 1: 1 en la base de datos relacional
- 27. ¿Cómo debo desinfectar la entrada de la base de datos en Java?
- 28. Cómo almacenar objetos TimeZoneInfo en una base de datos?
- 29. gestión de errores elmah - almacenar en la base de datos
- 30. Cómo almacenar html en una base de datos mysql
Por lo que entiendo por las respuestas, si voy a utilizar el ID de usuario para conectar al usuario con algún proceso, entonces debería usar SID, pero si voy a usar el ID de usuario como una etiqueta, entonces es una mejor opción ir con la identificación de usuario pura ya que SID hace que mi base de datos sea más difícil de leer, ¿estoy en lo cierto? – HOY
Mostrar el SID al usuario no sirve, excepto para los administradores. Sin embargo, siempre puede convertir un SID a un nombre utilizando ['SUSER_SNAME (sid)'] (http://msdn.microsoft.com/en-us/library/ms174427.aspx) en T-SQL o utilizando ['SecurityIdentifier. Translate (typeof (NTAccount)) '] (http://msdn.microsoft.com/en-us/library/system.security.principal.securityidentifier.translate.aspx) en C#. –