¿Cómo obtener aspnet_Users.UserId para un usuario anónimo en la membresía ASP.NET?
-
06-07-2019 - |
Pregunta
Estoy intentando obtener el campo UserId
de pertenencia a aspnet de un usuario anónimo.
He habilitado la identificación anónima en web.config:
<anonymousIdentification enabled="true" />
También he creado un perfil:
<profile>
<providers>
<clear />
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ApplicationServices"
applicationName="/" />
</providers>
<properties>
<add name="Email" type="System.String" allowAnonymous="true"/>
<add name="SomethingElse" type="System.Int32" allowAnonymous="true"/>
</properties>
</profile>
Veo datos en mi tabla aspnetdb \ aspnet_Users
para usuarios anónimos que han establecido información de perfil.
Userid PropertyNames PropertyValuesString
36139818-4245-45dd-99cb-2a721d43f9c5 Email:S:0:17: me@example.com
Solo necesito encontrar la forma de obtener el valor 'Userid'.
No es posible utilizar:
Membership.Provider.GetUser(Request.AnonymousID, false);
El Request.AnonymousID es un GUID diferente y no es igual a 36139818-4245-45dd-99cb-2a721d43f9c5.
¿Hay alguna manera de obtener este Userid. Quiero asociarlo con una actividad incompleta para un usuario anónimo. Usar la clave principal de aspnet_Users
es preferible a tener que crear mi propio GUID (que podría hacer y almacenar en el perfil).
Esto es básicamente una dupe de esta pregunta pero la pregunta nunca fue respondida realmente.
Solución
Puede obtener el UserId para un usuario anónimo con esto:
string userId = Request.AnonymousID
Otros consejos
OK, entonces MemberShip.GetUser ()
devuelve un objeto de tipo MembershipUser
.
Al profundizar en las tablas en la base de datos aspnetdb
, parece que aunque se crea una fila en aspnet_Users
para todos los usuarios (incluso los anónimos), NO se crea una fila. en aspnet_Membership a menos que el usuario esté realmente autenticado / registrado.
Pero, un perfil de usuario anónimo (tabla aspnet_Users) recibe un GUID en lugar de un UserName
.
Todavía no he encontrado la forma de acceder a la propiedad UserId
de un usuario anónimo, pero me he dado cuenta de que, de todos modos, el nombre de usuario es la clave más útil.
El campo UserId
también está presente en la tabla aspnet_Users
, por lo que si realmente necesita el campo UserId exclusivo, puede obtenerlo con una búsqueda de SQL 'manual'.