2013-08-05 84 views
5

Windows kimlik doğrulamanın nasıl çalıştığını ve nasıl uygulanacağını anlamaya çalışıyorum. Oldukça az sayıda makale okudum ve youtube'da oldukça uzun videolar izledim ama hala düzgün çalışmasını sağlamak için web.config dosyama/index.aspx sayfama eklenmesi gereken şeyleri kafamda saklayamıyorum. İşte Windows kimlik doğrulamasını asp.net ile kullanarak C#

index.aspx sayfası:

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 

Ve burada web.config dosyası

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

"Yetkilendirme" öğelerini kullanarak konumları kilitlemeniz gerekir. –

+0

Kullanıcı adı ve parola için bir veritabanına karşı bir çeşit kontrol yapıyorsunuz, bu daha çok form tabanlı kimlik doğrulaması. Windows kimlik doğrulamasının amacı buna sahip olmamalıdır ya da bu pencerelere ihtiyacınız varsa, o zaman giriş sayfasına kimlerin erişebileceğini kilitleyecektir. Web.config kimlik doğrulaması elemanına doğru şekilde yerleştirdiniz, ancak yetkilendirme öğesini kaçırıyorsunuz. Bu sayfayı anlayın ve Anlayın. http://msdn.microsoft.com/en-us/library/8d82143t(v=vs.85).aspx – Bearcat9425

+2

Teşekkürler, bu satırı web.config dosyasına ekledim Index.aspx sayfama eklemem gereken ek kod var mı? –

cevap

6

Windows kimlik doğrulaması ile SQL kimlik doğrulaması karıştırıyorsun olduğunu. Bu web sayfası için Amacıyla

Windows kimlik dayalı çalışır üzere, web.config bir web sunucusuna sayfanızı dağıtırken

<authentication mode="Windows"> 

ihtiyacı var, dış kullanıcılara kısıtlamak için anonim kimlik doğrulamasını devre dışı gerekir.

enter image description here

Eğer kullanıcı veya kendi grubu içinde açmış karşı program gerekiyorsa

enter image description here

, sen WindowsIdentity Class kullanmak gerekir: Aşağıda bir IIS7 + web sunucusunun kimlik doğrulama bölümünden snippet'idir.

+1

Görüyorum, ilk kez güvenlik sorunları ile karşılaştım, bu yüzden doğru yapmaya çalışıyorum ama kafası karıştı, teşekkür ederim –