Hola.
Lo que se puede hacer en este caso es crear un usuario INVITADO("A001").
Cuando a la persona le llega el correo electronico con el link
login.aspx?ID=123456 la persona es direccionada a la pagina de login.aspx y es en page_load donde evaluas si por QueryString llega un ID, si en caso llega un ID evaluas su existencia y redireccionas a la pagina de la postal creando una Session de Invitado con el usuario de tu base de de datos llamado INVITADO.
Algo asi:
Código:
private void Page_Load(object sender, System.EventArgs e)
{
if(Request.QueryString["ID"]!=null)
{
/*Verificar id en la BD*/
//......
/*Asumiendo que A001 sea el pk de invitado en la tabla de usuarios*/
Session["oUsuario"] = Usuario().obtenerXId("A001");
FormsAuthentication.RedirectFromLoginPage("****", false);
Response.Redirect("paginas/tarjeta.aspx?ID="+Request.QueryString["ID"].ToString());
}
}
Ahora, el problema en este caso podria ser que el usuario ya se encuentra autenticado en el site y cambiando la URL podria entrar a otras paginas. Esto se solucionaria validando el acceso a la pagina en el evento page_load de cada una de las paginas.
Algo asi:
Código:
Usuario oUsuario = (Usuario)Session["oUsuario"];
if(UsuarioPuedeIngresar(oUsuario))
{
//Ir a ver
}
else
{
//Ir a aviso no puedes ingresar a esta pagina
}
Bueno espero haberte podido ayudar.
Saludos cordiales desde la tierra del rico cebiche y el verdadero pisco.