Fórum Tela de login não barra usuarios não autenticados. #9882

06/10/2009

0

Olá,   Tenho uma tela de login, mas, quando eu digito o endereço da pagina que deveria ser exibida somente aos usuarios autenticados, ela aparece, ao inves de continuar na tela de login.   Eu já configurei o web.config mas não sei o que está fazendo isso.   Segue meu código do web.config:  
   
João Teixeira

João Teixeira

Responder

Posts

06/10/2009

João Teixeira

Segue o codigo:   <connectionStrings>
    <add name="nomeConnectionString" connectionString="Server=endereco.com.br;User id=useradmin;Password=123456;Persist Security Info=True;Database=dbteste;Allow User Variables=True"
      providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <location path="logo.gif">
 <appSettings/>
  <system.web>
      <authentication mode="Forms">
        <forms name=".SecureWeb" loginUrl="login.aspx"/>
      </authentication>
      <authorization>
        <deny users="?"/>
      </authorization>
Responder

Gostei + 0

06/10/2009

Fabio Mans

Olá João não existe mas nenhum allow user no seu Web.Config? Por exemplo abaixo a página Texte.aspx está liberada   <location path="Teste.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>     E o que você fez está correto.      <authorization>
   <deny users="?"/>
  </authorization>     Negando acesso para todos que não estão logado.   Posta o seu Web.Config completo.   Fabio
Responder

Gostei + 0

07/10/2009

João Teixeira

<?xml version="1.0"?>
<!--
    Note: As an alternative to hand editing this file you can use the
    web admin tool to configure settings for your application. Use
    the Website->Asp.Net Configuration option in Visual Studio.
    A full list of settings and comments can be found in
    machine.config.comments usually located in
    \Windows\Microsoft.Net\Framework\v2.x\Config
-->
<configuration>
 <configSections>
  <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
   <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
     <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
     <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
     <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
     <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    </sectionGroup>
   </sectionGroup>
  </sectionGroup>
 </configSections>
 <appSettings/>
 <connectionStrings>
  <add name="antectreinamentoConnectionString" connectionString="server=127.0.0.1;user id=root;database=antectreinamento;Allow User Variables=True" providerName="MySql.Data.MySqlClient"/>
  <add name="antectreinamentoConnectionString2" connectionString="server=127.0.0.1;user id=root;database=antectreinamento" providerName="MySql.Data.MySqlClient"/>
 </connectionStrings>
 <location path="logo.gif">
  <system.web>
   <!--
            Set compilation debug="true" to insert debugging
            symbols into the compiled page. Because this
            affects performance, set this value to true only
            during development.
        -->
   <compilation debug="false">
    <assemblies>
     <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
     <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
     <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
     <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
     <add assembly="MySql.Data, Version=6.1.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
    </assemblies>
   </compilation>
   <!--
            The <authentication> section enables configuration
            of the security authentication mode used by
            ASP.NET to identify an incoming user.
        -->
   <customErrors mode="Off"/>
   <authentication mode="Forms">
    <forms name="SecureWeb" loginUrl="login.aspx"/>
   </authentication>
   <authorization>
    <deny users="?"/>
   </authorization>
   <!--
            The <customErrors> section enables configuration
            of what to do if/when an unhandled error occurs
            during the execution of a request. Specifically,
            it enables developers to configure html error pages
            to be displayed in place of a error stack trace.         <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
   <pages>
    <controls>
     <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
     <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </controls>
   </pages>
   <httpHandlers>
    <remove verb="*" path="*.asmx"/>
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
   </httpHandlers>
   <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   </httpModules>
  </system.web>
 </location>
 <system.codedom>
  <compilers>
   <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <providerOption name="CompilerVersion" value="v3.5"/>
    <providerOption name="WarnAsError" value="false"/>
   </compiler>
   <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <providerOption name="CompilerVersion" value="v3.5"/>
    <providerOption name="OptionInfer" value="true"/>
    <providerOption name="WarnAsError" value="false"/>
   </compiler>
  </compilers>
 </system.codedom>
 <!--
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
 <system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
   <remove name="ScriptModule"/>
   <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </modules>
  <handlers>
   <remove name="WebServiceHandlerFactory-Integrated"/>
   <remove name="ScriptHandlerFactory"/>
   <remove name="ScriptHandlerFactoryAppServices"/>
   <remove name="ScriptResource"/>
   <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </handlers>
 </system.webServer>
 <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
   </dependentAssembly>
   <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
   </dependentAssembly>
  </assemblyBinding>
 </runtime>
 <system.web>
  <compilation>
   <assemblies>
    <add assembly="MySql.Data, Version=6.1.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/></assemblies></compilation></system.web></configuration>
Responder

Gostei + 0

07/10/2009

Fabio Mans

Parece que está OK, e esta página está em alguma pasta? Nesta pasta não tem nenhum web.config?
Responder

Gostei + 0

07/10/2009

João Teixeira

Estranho, porque o web.config, a tela de login e a default estão no mesmo nivel, dentro da pasta do projeto estão no "raiz".      
Responder

Gostei + 0

07/10/2009

João Teixeira

Percebi uma coisa:   Se eu tiro as tags:     <location Path="login.gif">   A restrição funciona.   Mas não aparece a imagem na tela...   em qual parte do código eu coloco o location path para exibir a imagem e onde coloco o fechamento da tag?        
Responder

Gostei + 0

07/10/2009

Fabio Mans

Se não tiver nenhum problema para você, tem como mandar o projeto para fgamans@gmail.com ?
Responder

Gostei + 0

07/10/2009

Fabio Mans

Faz o seguinte crie uma pasta chamada images e coloque suas imagens dentro, e libere utiiza a configuração abaixo.  
  <location path="Images">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>   Com esta restrição todo o seu site vai continuar bloqueado exceto a pasta Images.   Fabio
   
Responder

Gostei + 0

07/10/2009

João Teixeira

o problema é que o projeto é de um cliente e o banco é acessado diretamente pelo host deles... existem configurações com dados da empresa deles...   na verdade o codigo agora estaria funcionando se o location não estivesse no lugar errado, só preciso saber onde coloca-lo e onde fecha-lo para que não interfira na autenticação...    
Responder

Gostei + 0

07/10/2009

Fabio Mans

Perfeito não precisa mandar, acho que descobrimos, faça o que disse no post anterior, vai dar certo. Crie a pasta images e libere a restrição.   Fabio
Responder

Gostei + 0

07/10/2009

João Teixeira

Agora sim...   Coloquei este trecho do código antes do meu <systemweb> e funcionou.   Eu não sabia que se poderia utilizar mais de uma tag <systemweb>.   Outra coisa...   A minha autenticação está no evento click do botão onde eu coloco algo do tipo:   se o usuario e senha for igual a zezinho e senhateste, OU se for igual a mariazinha e teste2, então vá para a pagina default.aspx.   Ok, isto está funcionando.   O problema é que eu preciso fazer esta comparação buscando os dados da tabela de usuario e senha.   Eu até consigo fazer um sqldatasource com as informações, mas como eu uso isso no evento click?   Obrigado.
Responder

Gostei + 0

07/10/2009

Fabio Mans

Então deixa eu te passar um curso completo sobre este assunto, aconselho você assistir todas as aulas, é bem interessante, fala tudo sobre autenticação, permissões acredito que você vai gostar.   Video: Curso Online-Forms Authentication e Roles-Aula I-Apresentando o objetivo do projeto   https://www.devmedia.com.br/articles/viewcomp.asp?comp=11713   As demais aulas você encontra no final da página.     Depois que você assistir me da um retorno do que achou.     Fabio
Responder

Gostei + 0

07/10/2009

João Teixeira

ok vou dar uma olhada. 
Responder

Gostei + 0

07/10/2009

João Teixeira

Olá,   Eu não pude assistir todos os videos pois estou no trabalho. Mas eu tive alguns avanços, e preciso de uns "retoques".   eu criei um dataset com um tableadapter com a seguinte sql:   SELECT     usuario_id, usuario_nome, usuario_senha
FROM         usuarios
WHERE     (usuario_nome = @nome) AND (usuario_senha = @senha)   (Eu testo esta query colocando um usuario no @nome e uma senha no @senha, e como preview aparece a linha deste usuario com o id, nome e senha. Entendo que a query está correta.)   Depois eu criei um objectdatasource no webform de login associando os parametros @nome e @senha aos textbox do formulario.   Aí criei um botao "entrar" para fazer a comparação.   No evento click eu coloquei dessa forma: mas está dando errado, eu coloco o nome e senha e continua na mesma pagina. O comando está errado? como eu ajusto ele?   public partial class login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {     }
    protected void CmdLogin_Click(object sender, EventArgs e)
    {       
        if (txtLogin.Text == this.ObjectDataSource1.Select() && txtSenha.Text == this.ObjectDataSource1.Select())
        {
            FormsAuthentication.RedirectFromLoginPage(txtLogin.Text, chkLembrar.Checked);
        }
    }
}
Responder

Gostei + 0

07/10/2009

Fabio Mans

Degugando qual o conteúdo de this.ObjectDataSource1.Select() ? Por que não retorna um objeto sem utilizar o ObjectDataSource?

txtLogin.Text == this.ObjectDataSource1.Select() && txtSenha.Text == this.ObjectDataSource1.Select()
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar