ITfjernundervisning

ASP.NET / Sikkerhed / En bruger klasse

En bruger klasse

Når man arbejder med sites med en sikkerhedsmodel kan det være meget nyttigt med klasse man kan bruge i relation til brugerhåndteringen - sådan en klasse kan gøre mange ting for os, men umiddelbart kunne lave én der har følgende metoder og egenskaber

Egenskaber

  • Brugernavn
  • Email
  • Godkendt


Metoder

  • GodkendBruger(Brugernavn, Password)
  • OpretNyBruger(Brugernavn, Password, Email)

Om klassen trækker sine fra en database eller et XML dokument er ikke så afgørende, men lad os bare kigge på, hvordan man kan gøre det hvis man har sine brugere i en database.

Den ydre ramme til klassen kunne se sådan her ud i VB - jeg har valgt at lægge de to metoder ind i New metoden på klassen, det syntes jeg virkede mest naturligt.

Public Class Bruger
  Public Sub New(ByVal Brugernavn As String, ByVal Password As String)
    ' Slå op i databasen og giv egenskaberne værdier 
  End Sub

  Public Sub New(ByVal Brugernavn As String, ByVal Password As String, ByVal Email As String)
    ' Opret en ny bruger i databasen og giv egenskaberne værdier
  End Sub

  Dim _Brugernavn As String
  Dim _Email As String
  Dim _Godkendt As Boolean

  Public Property Brugernavn() As String
    Get
      Return _Brugernavn
    End Get
    Set(ByVal Value As String)
      _Brugernavn = Value
    End Set
  End Property

  Public Property Email() As String
    Get
      Return _Email
    End Get
    Set(ByVal Value As String)
      _Email = Value
    End Set
  End Property

  Public Property Godkendt() As Boolean
    Get
      Return _Godkendt
    End Get
    Set(ByVal Value As Boolean)
      _Godkendt = Value
    End Set
  End Property
End Class

Klassen her kan vi jo bruge i alle vores filer, men i første omgang skal den jo bruges i vores login.aspx og det kunne se sådan her ud (det er kun codebehind delen der er interessant)

Private Sub loginBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles loginBtn.Click
  If Page.IsValid Then
    Dim objBruger As Bruger = New Bruger(Username.Text, Userpass.Text)
      If objBruger.Godkendt Then
        FormsAuthentication.RedirectFromLoginPage(Username.Text, False)
      Else
        Msg.Text = "Du har fået tastet forkert brugernavn eller password"
      End If
  End If
End Sub

Husk at sætte imports i toppen af koden også så den kender dit Bruger objekt:

Imports System.Web.Security
Imports Fjernundervisning_eksempel_VB.Bruger

Database arbejdet

Så mangler vi "bare" at få klassen til at snakke med en database. Det burde ikke være så svært med den ADO viden vi allerede har . Kontrollen af brugernavn og kodeord kunne laves sådan her:

Public Sub New(ByVal Brugernavn As String, ByVal Password As String)
  Dim strConnection As String = ConfigurationSettings.AppSettings("ConnectionStr")
  Dim strSQL As String = "SELECT * FROM tblBrugere WHERE Brugernavn='" _
    + Brugernavn + "' AND Password='" + Password + "'"
  Dim objConnection As OleDbConnection = New OleDbConnection(strConnection)
  Dim objCommand As OleDbCommand = New OleDbCommand(strSQL, objConnection)
  Dim objDatareader As OleDbDataReader
  objConnection.Open()
  objDatareader = objCommand.ExecuteReader()
  If objDatareader.Read() Then
    Me.Godkendt = True
    Me.Brugernavn = objDatareader("Brugernavn")
    Me.Email = objDatareader("Email")
  Else
    Me.Godkendt = False
  End If
End Sub

Husk at brug af database også kræver imports

Imports System.Data
Imports System.Data.OleDb
Imports System.Configuration

Og husk også at du skal have en ConnectionStr i din web-config, der på passendevis peger på din database OG selvfølgelig en database.


Når du har betalt for kurset får du adgang til øvelser til hver lektion.
Og når du har fået godkendt din besvarelse får du desuden adgang til mine løsningsforslag med ekstra tips og trix.