Je développe des services web.Dans ce que je veux maintenir des informations d'état de sorte que tous les WebMethods pourraient être l'accès seulement après la connexion. J'ai essayé mais j'ai eu des problèmes. Je joins mon code. Toute autre alternative sera également la bienvenue.effectuer l'autorisation/authentification entre les services Web
[
WebService (Namespace = "http://amSubfah.org/")]
[
WebServiceBinding (conformsTo = WsiProfiles.BasicProfile1_1)]
// Pour permettre à ce service Web pour être appelé à partir du script, en utilisant ASP.NET AJAX, décommentez la ligne suivante.
// [System.Web.Script.Services.ScriptService]
publique
classe Login: System.Web.Services.WebService {
message msgObj = nouveau message();
BaseClass b = nouveau BaseClass();
PasswordEncryptionDecryption pedObj = nouveau PasswordEncryptionDecryption(); Public AuthHeader Authentication = new AuthHeader();
public AuthHeader Authentification = new AuthHeader();
Connexion publique() {
// Décommentez la ligne suivante si vous utilisez des composants conçus
// InitializeComponent();
}
[
SoapHeader ("Authentification", requise = true)]
[System.Web.Services.
WebMethod (EnableSession = true)]
chaîne publique checkUserLogin (utilisateur string, string PWD)
{
DataSet dsLogin = new DataSet();
Liste sqlParams = new Liste();
SqlParameter sqlParam1 = nouveau SqlParameter ("@ UserName", SqlDbType.NVarChar);
sqlParam1.Value = utilisateur;
sqlParams.Ajouter (sqlParam1);
SqlParameter sqlParam2 = nouveau SqlParameter ("@ Password", SqlDbType.NVarChar);
chaîne pass = pedObj.encryptPassword (pwd);
sqlParam2.Value = passe;
sqlParams.Add (sqlParam2);
essayer
{
b.initializeDBConnection();
dsLogin = b.execSelectLoginQuery (
Query.strSelectLoginData, sqlParams);
}
catch (SqlException sqlEx)
{
chaînestr = msgObj.msgErrorMessage + sqlEx.Message + sqlEx.StackTrace;
}
{if ((dsLogin! = Null) & & (dsLogin.Tables [0] .Rows.Count! = 0))
{
session [
"nom d'utilisateur"] = utilisateur;
chaîne sessionId = System.Guid.NewGuid(). ToString();
Authentication.sessionId = sessionId;
Authentication.Username = user;
return msgObj.msgLoginSuccess;
}
autre
retour msgObj .msgLoginFail;
}
// webmethod pour l'enregistrement
[
SoapHeader ("Authentification", requise = true)]
[Système .web .Services.
WebMethod (EnableSession = true)]
insertRegistrationDetails de chaîne publique (chaîne FNAME, chaîne lName, email string, string PWD)
{
// chaîne u = Session [ "nom d'utilisateur" ] .ToString();
// if (u == "")
// {
// // checkUserLogin (fName, PWD);
// return "Veuillez vous connecter d'abord";
//}
if (Authentication.Username == null || Authentication.sessionId == null)
{
retour "S'il vous plaît connecter";
}
Liste sqlParams = new List();
int insert = 0;
chaîne msg = "";
SqlParameter sqlParam = nouveau SqlParameter ("@ FName", SqlDbType.NVarChar);
sqlParam.Value = fName;
sqlParam.Size = 50;
sqlParams.Add (sqlParam);
SqlParameter sqlParam1 = nouveau SqlParameter ("@ LName", SqlDbType.NVarChar);
sqlParam1.Value = lName;
sqlParam1.Size = 50;
sqlParams.Add (sqlParam1);
SqlParameter sqlParam5 = new SqlParameter ("@ E-Mail", SqlDbType.NVarChar);
sqlParam5.Value = email;
sqlParam5.Size = 50;
sqlParams.Add (sqlParam5);
SqlParameter sqlParam7 = new SqlParameter ("@ Mot de passe", SqlDbType.NVarChar);
sqlParam7.Value = pedObj .encryptPassword (PWD);
sqlParam7.Size = 50;
sqlParams.Ajouter (sqlParam7);
essayer
{
b.initializeDBConnection();
insert = b.execByKeyParams (
Query.strInsertIntoRegistrationTable1, sqlParams);
if (insert = 0!)
{
msg = msgObj .msgRecInsertedSuccess;
}
}
catch (SqlException sqlEx)
{
chaînestr = msgObj.msgErrorMessage + sqlEx.Message + sqlEx.StackTrace;
return msg;
}
public class AuthHeader: SoapHeader
{
chaîne publique Nom d'utilisateur;
chaîne publique sessionId;
}
}