2013-08-05 4 views
5

Sto cercando di capire come funziona l'autenticazione di Windows e come implementarla. Ho letto parecchi articoli e ho visto alcuni video abbastanza lunghi su YouTube, ma non riesco ancora a capire cosa deve essere aggiunto alla mia pagina web.config/index.aspx per farlo funzionare correttamente.Utilizzo dell'autenticazione Windows in asp.net con C#

Ecco la pagina index.aspx:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 

namespace asset_management_system 
{ 
    public partial class index1 : System.Web.UI.Page 
    { 

    DataAccessLayer dal = new DataAccessLayer(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void loginBut_Click(object sender, EventArgs e) 
    { 

     string username = usernameTB.Text.Trim(); 
     string password = passwordTB.Text.Trim(); 

     try 
     { 
      using (SqlDataReader dr = dal.CheckLoginDetails(username)) 
      { 
       //if username does not exist 
       if (!dr.Read()) 
       { 
        MessageBox.Show("Invalid login details"); 
       } 

       else 
       { 
        //if password matches the username then redirect to home page 
        if (dr[0].ToString() == password) 
        { 
         Session["username"] = username; 
         Response.Redirect("Home/home.aspx"); 
        } 
        else 
        { 
         MessageBox.Show("Invalid login details"); 
        } 
       } 
      } 
     } 
     catch (SqlException sqlex) { MessageBox.Show("There may be an issue with the server, please contact the administrator" + 
                " and provide this error message: " + sqlex); } 
     catch (Exception ex) { MessageBox.Show("error message: " + ex); } 


    }//end of loginBut_click method 


    }//end of class 
}//end of namespace 

E qui è il file web.config

<?xml version="1.0"?> 

<configuration> 

    <connectionStrings> 
    <add name="Asset management System DBConnectionString" connectionString="Data Source=STEPHENP\SQLEXPRESS;Initial Catalog=&quot;Asset management System DB&quot;;Integrated Security=True" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

    <system.web> 

    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
     <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     </assemblies> 
    </compilation> 

    <authentication mode="Windows"> 
    </authentication> 
    <identity impersonate="true"/> 

    </system.web> 

</configuration> 
+0

È necessario bloccare le posizioni utilizzando gli elementi 'autorizzazione'. –

+0

Stai facendo una specie di controllo su un database per un nome utente e una password, che è più di un'autenticazione basata su moduli. Lo scopo dell'autenticazione di Windows è di non averlo, o se è necessario che l'autenticazione di Windows bloccherà chi può accedere alla pagina di accesso. Hai posizionato correttamente nel web.config l'elemento di autenticazione ma manca l'elemento di autorizzazione. Vedi questa pagina per e intesa. http://msdn.microsoft.com/en-us/library/8d82143t(v=vs.85).aspx – Bearcat9425

+2

Grazie ragazzi, ho aggiunto questa riga al file web.config C'è un altro codice da aggiungere alla mia pagina index.aspx? –

risposta

6

Stai confondendo l'autenticazione di SQL con l'autenticazione di Windows.

Affinché questa pagina web per lavoro basato su autenticazione di Windows, il web.config bisogno

<authentication mode="Windows"> 

Quando si distribuisce la pagina su un server web, è necessario disattivare l'autenticazione anonima per limitare gli utenti esterni. Di seguito è riportato un frammento dalla sezione di autenticazione di un web server IIS7 +:

enter image description here

enter image description here

Se è necessario programmare contro utente connesso o il suo gruppo, è necessario utilizzare il WindowsIdentity Class.

+1

Vedo, è la prima volta che ho riscontrato problemi di sicurezza, quindi sto cercando di farlo bene ma mi sto confondendo, grazie –