MVC3访问控制中的Session和FormsAuthentication

时间:2014-01-06 12:36:27

标签: c# asp.net-mvc-3 session

我使用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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我会避免使用Session,特别是在使用MVC时 - 它不适合网络。

另一种方法是使用IIdentity并在Application_AuthenticateRequest方法中设置详细信息。