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:

  1. 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?

  2. 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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top