Vi na Internet que o Cache pode ser usado para determinar se o usuário está logado, o que parece muito bom. Após o experimento, o
princípio do código compartilhado aqui é relativamente simples:
Determine se a sequência de login do cliente especificada já existe no cache. Caso contrário, adicione-a e especifique seu tempo de armazenamento no cache. Ao efetuar login repetidamente, você pode determinar se o usuário efetuou login repetidamente, avaliando se o valor do cache está vazio.
//Gerar chave
string sKey = TextBox1.Text + "_IsLogin";
//Obtém o valor da chave fornecida no cache
string sUser = Convert.ToString(Cache[sKey]);
//Verifica se existe
if (sUser == null || sUser == String.Empty)
{
//Não há nenhum item para esta Chave no Cache, indicando que o usuário não está logado ou o tempo de login expirou.
//TimeSpan representa um intervalo de tempo e obtém o valor de configuração do sistema para o tempo limite da sessão.
//TimeSpan SessTimeOut = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);
//(Se for considerado que o tempo permitido para o usuário logar novamente é menor que o timeout da sessão, este valor pode ser definido menor, neste exemplo é definido como um minuto)
TimeSpan SessTimeOut = novo TimeSpan(0, 0, 1, 0, 0);
HttpContext.Current.Cache.Insert(sKey, sKey, null, DateTime.MaxValue, SessTimeOut,
System.Web.Caching.CacheItemPriority.NotRemovable, null);
//Depois de fazer login pela primeira vez, você pode fazer o trabalho que deseja.
Label1.Text = "Olá! Bem vindo";
}
outro
{
//O registro do usuário é encontrado no Cache O nome da tabela já foi logado. É proibido efetuar login novamente.
Label1.Text = "Desculpe, você fez login em outro lugar. Ou tente novamente em 1 minuto";
retornar;
}
http://www.cnblogs.com/heekui/archive/2006/12/14/591691.html