2012-04-08 4 views
1

Kann mir jemand sagen, wie Benutzer mit der SQL Server-Datenbanktabelle authentifiziert werden, die VB als Webdienst verwendet. Über diesen VB-Code konnte ich mich mit dem SQL-Server verbinden.Web-Service: Authentifizierung von Benutzern mit der SQL Server-Datenbanktabelle mit VB

Public Sub ConnectToSQL() 
     Dim con As New SqlConnection 
     Dim cmd As New SqlCommand 
     Try 
      con.ConnectionString = "Data Source=(local);Initial Catalog=TestDatabase;Persist Security Info=True;User ID=sa;Password=421" 
      con.Open() 
     Catch ex As Exception 
      MessageBox.Show("Error while connecting to SQL Server." & ex.Message) 
     Finally 
      con.Close() 'Whether there is error or not. Close the connection. 
     End Try 
    End Sub 

Irgendwelche? Vielen Dank im Voraus.

+0

Der normale Ansatz besteht darin, den Webdienst für die Datenbank zu authentifizieren.Es ist nahezu unmöglich, den Endbenutzer aufgrund von [Delegierung von Vertrauensproblemen] an die Datenbank zu authentifizieren (http://stackoverflow.com/questions/1981414/asp-net-windows-authentication-to-sql-server). – Andomar

+0

Kann ich meine Frage nicht gelöst werden, einfach zu sagen, dass ich Benutzer und ihr Passwort in der Datenbank hinzufügen müssen (Wie geht das in VB? In dem obigen Code?) Zweitens ist, wie diese Anmeldeinformationen verwenden, um auf die Anwendung zuzugreifen über Webservice? – AbdulAziz

Antwort

2

Ich würde empfehlen, dass Sie zunächst grundlegende Lernprogramme auf SQL Server sowie ADO.Net durchlaufen und dann Fragen stellen. Dies wird dazu beitragen, Ihre Konzepte klar zu machen, und jede Hilfe kann in stärker fokussierten Problembereichen bereitgestellt werden. Übrigens, keine harten Gefühle, nur wollen, dass Sie sich beim Programmieren wohl fühlen. :)

Schritt 1:

relevante Datenbanktabellen erstellen. Diese können eine Tabelle users und andere Tabellen wie roles usw. enthalten.

EDIT: Sie können SQL-Skripts verwenden, um Tabellen in DB zu erstellen. Bitte finden Sie ein Beispiel unten.

-- Sample Table Creation and Index Creation script for MCIS-4423 
-- This script is designed to be "re-runnable", but you need to be careful, 
-- Since this will DROP the table, which would be bad if it was an existing table with data 

-- Make sure you are in the correct database 
USE [AdventureWorks] 
GO 

-- Drop Check Constraint 
IF EXISTS (SELECT * FROM sys.check_constraints WHERE object_id = OBJECT_ID(N'[dbo].[CK_Team_TeamID]') AND parent_object_id = OBJECT_ID(N'[dbo].[Team]')) 
ALTER TABLE [dbo].[Team] DROP CONSTRAINT [CK_Team_TeamID] 
GO 

-- Drop Table 
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Team]') AND type in (N'U')) 
DROP TABLE [dbo].[Team] 
GO 

-- Create Table 
CREATE TABLE [dbo].[Team](
    [TeamID] [char](3) NOT NULL, 
    [TeamName] [varchar](20) NOT NULL, 
    [City] [varchar](50) NOT NULL, 
    [StateCode] [char](2) NULL, 
    [PostalCode] [char](5) NULL, 
CONSTRAINT [PK_Team] PRIMARY KEY CLUSTERED 
(
    [TeamID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 

-- Add Check Constraint 
ALTER TABLE [dbo].[Team] WITH CHECK ADD CONSTRAINT [CK_Team_TeamID] CHECK (([TeamID] like '[A-Z][A-Z][A-Z]')) 
GO 
ALTER TABLE [dbo].[Team] CHECK CONSTRAINT [CK_Team_TeamID] 
GO 

-- Drop index if it exists 
IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Team]') AND name = N'IX_Team_TeamName') 
DROP INDEX [IX_Team_TeamName] ON [dbo].[Team] WITH (ONLINE = OFF) 
GO 

-- Add non-clustered index on StateCode column 
-- Use ONLINE = ON if you have Developer or Enterprise Edition 
-- Use MAXDOP = 2 (set to roughly 25% of the number of CPU cores to keep index creation from affecting performance) 
CREATE NONCLUSTERED INDEX [IX_Team_TeamName] ON [dbo].[Team] 
(
    [StateCode] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = ON, MAXDOP = 2, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
GO 

Bitte beachten Sie, dass diese Probe aus http://sqlserverperformance.wordpress.com/2007/09/27/sample-table-and-index-creation-script-for-sql-server-2005/ kopiert und alle seine Inhalte geht an den Autor bezogenen Kredit wer es geschrieben hat.

Schritt 2:

schreiben SQL-Abfrage um einen Benutzer zu finden, basierend auf seiner username und password. Sie können zur Passwortverschlüsselung gehen, aber das ist für die aktuelle Frage nicht möglich.

EDIT: Beispielabfrage kann wie folgt sein:

SELECT username FROM users 
WHERE [email protected] and [email protected] 

Sie durch SqlCommand Dokumentation lesen können here zu verstehen, wie zu einer Abfrage-Parameter hinzuzufügen.

Schritt 3:

hinzufügen WebMethod s, so dass Sie users Datensätze in der Datenbank erstellen können. Verwenden Sie SqlCommand, um INSERT Abfragen in Ihren Datenbanktabellen auszulösen.

EDIT: Lesen Sie here für ein Beispiel zum Schreiben von Webdiensten in VB.Net. Und ja, Sie wissen bereits jetzt, wie Sie SqlCommand verwenden, um SQL-Abfragen auszulösen, tun Sie dasselbe für INSERT Abfragen auch.

Schritt 4:

eine WebMethod erstellen, die einen Benutzer validiert. Verwenden Sie dazu das Objekt SqlCommand, um Ihre in Schritt 2 geschriebene Abfrage auszulösen. Wenn Sie als Ergebnis eine Zeile erhalten, ist der Benutzer gültig.

EDIT: Verweisen Sie die Anweisungen auf die obigen Schritte, und Sie sollten in der Lage sein, dies selbst zu erstellen.

Hoffe ich bin klar genug.

+0

Vielen Dank für Ihre Antwort. Ich habe all das in meinen Gedanken, und in Schritten hilft es mir wirklich, aber können Sie mir einige Code-Beispiele zu diesen Schritten zur Verfügung stellen. Danke – AbdulAziz

+0

Ich habe meine Antwort bearbeitet, um Proben zu enthalten. Bitte lesen Sie gründlich und markieren Sie als Antwort, wenn Sie es hilfreich finden. – AYK

+0

Vielen Dank für Ihren freundlichen Rat und antworten – AbdulAziz

Verwandte Themen