0
사용자 데이터 저장에 SESSION을 사용하므로 불필요한 데이터베이스 액세스를 피할 수 있습니다. 그러나 각 액세스 컨트롤러, 데이터 FormsAuthentication은 갱신되고 데이터 세션 번호는 갱신되지 않습니다.MVC3 액세스 제어에서 세션 및 양식 인증
이 문제를 해결하는 더 좋은 방법은 무엇입니까? 위대한 세션의 삶을 바꾸거나 기본 컨트롤러를 만들거나 각각 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();
}
}
}
나는 영어를 모국어가 아니지만 질문은 이해할 수 없습니다. 세션이 빨리 종료되거나 연장되지 않는 문제가 있습니까? – Kami
제 문제는 FormsAuthentication이 SESSION이 아닌 컨트롤러에 액세스 할 때마다 갱신된다는 것입니다. 컨트롤러 세션에 대한 모든 액세스를 유지하는 가장 좋은 방법을 알고 싶습니다. –