ASP.NET Forms autenticação
-
10-07-2019 - |
Pergunta
No meu web.config eu tenho isso:
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" protection="All" path="/" timeout="30"/>
</authentication>
<sessionState timeout="20" />
</system.web>
<location path="admin">
<system.web>
<authorization>
<deny users="*"/>
<allow users="admin"/>
</authorization>
</system.web>
</location>
Eu tenho dois problemas:
No meu caminho de administrador, quero que apenas o usuário do administrador tenha acesso, mas não consigo encontrar uma maneira de fazer isso. Como posso fazer apenas o usuário do administrador ter acesso?
O usuário sempre é logado, mesmo se eu tentar usar cookies para que ele não deve ser registrado. No meu login.aspx, tenho o código seguinte quando o usuário é válido:
FormsAuthentication.RedirectFromLoginPage(user, CheckBoxPersistCookie.Checked);
Como posso fazer o usuário ficar conectado?
Solução
tente colocar o <allow>
linha sobre o <deny>
linha.
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" protection="All" path="/" timeout="30"/>
</authentication>
<sessionState timeout="20" />
</system.web>
<location path="admin">
<system.web>
<authorization>
<allow users="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
Outras dicas
Pelo que entendi, você tem 30 minutos de tempo limite em seu cookie de autenticação e 20 minutos em seu cookie de sessão. Parece que, como a sessão expirará em 20 minutos, será impossível usar cookie de autenticação também.
É um pouco complicado se você quiser deixar o usuário conectado. Sei que é possível implementá -lo usando o JavaScript e o IFRAME invisível. Você precisa recarregar o Iframe a cada 5 minutos, por exemplo. Sua sessão será atualizada e os cookies locais atualizados.