Pergunta

Eu tenho como ASP.Net 2.0 site com SQL Server como banco de dados e C # 2005 como a linguagem de programação. O site está quase completo e todos os links estão funcionando bem. Mas eu quero evitar que os usuários normais de abrir um par de páginas. Quando qualquer usuário clica nesses links específicos, outra página abre que contém um controle ASP Entrada. O usuário tem que fornecer um ID de usuário e senha válidos para exibir os links apontando para as páginas restritivas. Mas sendo um novato, eu não sei como aproveitar o poder do controle ASP Entrada. Porque, se um usuário começa a conhecer o exato das páginas restritas, então ele / ela pode ignorar o controle de login e acessar diretamente as páginas digitando a URL na barra de endereços. Eu quero evitar isso. Se o usuário digita a URL diretamente na barra de endereços, eu quero que a página em si deve verificar, se o usuário foi validado por meio do controle Login e quer exibir a página ou apontar o usuário para a página de login.

Como faço para implementar este recurso ??

Obrigado.

Lalit Kumar Barik

Foi útil?

Solução

Você deve verificar o usuário do registrado no estado em todos os eventos Page_Load() em páginas que deve controlar permissões, ou simplesmente colocar o código de autenticação em um arquivo CS que será incluída em todos os outros arquivos.

Dependendo da arquitetura de autenticação que você escolher (basta usar a variável de sessão, ou criar uma ID de sessão com cookies), você deve adaptar o seu código em conformidade.

A maneira mais simples seria a de gerenciar o log-ins através do objeto sessão. Quando o usuário efetuar login corretamente com as credenciais certas, você pode definir Session["logged_in"] = true. E em cada evento Page_Load() das páginas que você deseja proteger, você precisa fazer o seguinte cheque.

Adicione este código no início do seu Page_Load () função:

  if (Session["logged_in"] != null && (bool)Session["logged_in"] == true){
    Response.Write("I'm logged in!");
  }else{
    Response.Write("I'm not logged in.");
  }

Tenha em mente que isso é bom para aplicações intranet simples, mas se você quiser entrar em arquiteturas de login mais seguro, ler mais sobre o assunto, como reloying exclusivamente sobre variáveis ??de sessão não é seguro porque as sessões podem ser highjacked .

Outras dicas

Você vai querer dar uma olhada na localização secton da configuração web.

Nessa seção, você pode definir até o nível de página os direitos de acesso, de modo que não importa se os usuários conhecia a URL das páginas seguras, ASP.NET não iria deixá-los entrar.

Assim que você gostaria de acrescentar algo como:

<location path="SecuredPage.aspx">
  <system.web>
     <authorization>
        <deny users="?"/>
     </authorization>
  </system.web>
</location>

O "negar users ="? "" Pouco diz "Negar todos os usuários anônimos".

Você também pode configurá-lo para permitir que apenas certos papéis, se você estiver usando os.

Mais informações sobre a seção de autorização pode ser encontrada aqui:

autorização Elemento

Este é alimento para os serviços ASP.Net Membership. Dê uma olhada na este artigo e também grandes séries sobre a 4GuysFromRolla.

A associação permite que você armazene informações de usuário / senha que é usado, entre outros, pelo controle Login. Juntamente com a configuração de autorização você será capaz de acessar diretamente estreita para páginas específicas para baixo para usuários específicos ou funções.

Você vai precisar de uma forma de gerenciar o login sessões para cada usuário. A seguir estão alguns tutoriais que podem ajudá-lo:

http://www.codeproject.com/KB/session/NoCookieSessionLogin.aspx

http://www.dotnetspider.com /resources/5597-Handling-Session-for-Login-Logout.aspx

Gostaria de fazer uma mesa de papel para os usuários. Todo mundo que faz login recebe o papel 'normal'. usos especiais que você designar por suas credenciais se papéis atribuídos para aceder a uma página ou seção do seu site. Alguns usuários (como você) teria uma função de administrador que permite que automaticamente lhes acesso a tudo.

Fire off uma função chamada CheckIsInRoles ( 'Admin', 'Normal', 'WhateverRoleYouChoose'), que retorna um boolean. Se for verdade, carregar a página; se não, não.

Ainda melhor não exibir um link, se não no papel correto.

Isto tem o benefício adicional de registro de todos em uma vez e, em seguida, acessar todas as páginas que precisam sem ter que entrar em cada tempo.

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