我使用SESSION存储用户数据,从而避免不必要的数据库访问。但是,每个访问控制器,数据FormsAuthentication都会更新,数据SESSION no。
有什么更好的方法可以解决这个问题? 把伟大的会话的生命,或制作一个基本控制器或每个称为ActionResult的生命更新会话的生命。
详细信息,SESSION我使用它来安装页面的标题。
此代码,创建SESSION。
public static void UsuarioLogar(string login)
{
CustomMembershipUser usuario = new CustomMembershipUser();
using (var dbUser = new ERPContext())
{
var dados = (from u in dbUser.Usuario
where u.Login == login
select new
{
Nome = u.Nome,
UsuarioID = u.UsuarioID,
EmpresaID = u.EmpresaID,
EmpresaLogada = u.Empresa,
PessoaLogada = u.PessoaLogada
}).FirstOrDefault();
if (dados != null)
{
usuario.UsuarioID = dados.UsuarioID;
usuario.Nome = dados.Nome;
usuario.EmpresaID = dados.EmpresaID;
usuario.EmpresaLogada = dados.EmpresaLogada;
usuario.PessoaLogada = dados.PessoaLogada;
if (usuario.PessoaLogada != null)
usuario.Acesso = "Restrito";
else
usuario.Acesso = "Full";
HttpContext.Current.Session["usuarioLogado"] = usuario;
}
else
{
HttpContext.Current.Session["usuario"] = null;
FormsAuthentication.SignOut();
}
}
}
答案 0 :(得分:0)
我会避免使用Session,特别是在使用MVC时 - 它不适合网络。
另一种方法是使用IIdentity并在Application_AuthenticateRequest方法中设置详细信息。