none
Modifier les valeurs des variables dans un webservice RRS feed

  • Question

  •  

    Salut,

    J'ai développé un web service qui met à jours des données dans SharePoint, le problème c'est au niveau de l'authentification. J'ai utilisé le web service de SharePoint UserGroup afin de récupérer le UserToken de l'utilisateur pour l'utiliser ensuite, si la connexion a réussi, dans le constructeur SPSite(url, UserToken). J’ai donc utilisé une variable de type SPUserToken dans laquelle je veux stoker le UserToken mais cette variable ne change pas de valeur et retourne chaque fois après l’authentification à sa valeur initiale (null).

    Comment je peux modifier la valeur de oUserToken après l'authentification?

     Merci d'avance

     

     

        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [ToolboxItem(false)]
        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
        // [System.Web.Script.Services.ScriptService]
        public class NameOfWebService: System.Web.Services.WebService
        {

              public SPUserToken  oUserToken;

              ..................
            public void AuthenticateUser(byte[] iUserName, byte[] iPassword)
            {
                oUserToken = GetUserToken(iUserName, iPassword);

            }
            private SPUserToken GetUserToken(byte[] iUserName, byte[] iPassword)

            {

                        UserGroup.UserGroup oUserGrp = new UserGroup.UserGroup();
                        oUserGrp.PreAuthenticate = true;
                        oUserGrp.Url = UrlSite + @"/_vti_bin/UserGroup.asmx";

                        //Décryptage de iUserName et iPassword
                         .................

                        oUserGrp.Credentials = new NetworkCredential(oUserName, oPassword, oDomain);

                        XmlNode olUserNodeColl = oUserGrp.GetAllUserCollectionFromWeb();
                        //Trouver le UserToken de l'utilisateur
                        SPSite oSite = new SPSite(UrlSite);
                        SPWeb oWeb = oSite.OpenWeb();
                        SPUserCollection olUserColl = oWeb.AllUsers;
                        foreach (XmlNode oChildNode in olUserNodeColl.FirstChild.ChildNodes)
                        {
                            if (oChildNode.Attributes["LoginName"].Value == oDomain + @"\" + oUserName)
                            {
                                int oUserID = int.Parse(oChildNode.Attributes["ID"].Value);
                                SPUser oUser = olUserColl.GetByID(oUserID);
                                return oUser.UserToken;
                            }
                        }

                        .......

               }
               ..............

         }

     

     

    jeudi 15 janvier 2009 21:06

Réponses

  • Est ce que la gestion des sessions est activée sur la ferme ? Pour sharepoint la session est gérée au niveau de la ferme et est donc géré via la base de données. plus d'infos ici
    • Marqué comme réponse Ahmed MEHDI mercredi 2 novembre 2011 20:23
    mercredi 28 octobre 2009 09:47
    Modérateur

Toutes les réponses

  •  

    Salut,

    J'ai essayé de travailler avec les sessions mais ............

     

    public SPUserToken  oUserToken

    {

    get { return (SPUserToken)Session["UserTokenTemp"];}

    }

    [WebMethod(EnableSession = true) ]

     public void AuthenticateUser(byte[] iUserName, byte[] iPassword)
    {
                Session["UserTokenTemp"] = GetUserToken(iUserName, iPassword);

    }

    mais au niveau get { return (SPUserToken)Session["UserTokenTemp"];} et après l'authentification la session ne contient pas la clé "UserTokenTemp"

     

    j'ai l'impression que le web service s'initialise, à chaque fois j'appel une méthode, et crée une nouvelle session

     

    j'ai plusieurs jours que je suis bolqué

    mardi 20 janvier 2009 20:16
  • Bonjour,

    Avez-vous trouvé une solution car je suis confronté au même problème ?

    Merci.
    mardi 27 octobre 2009 14:10
  • Est ce que la gestion des sessions est activée sur la ferme ? Pour sharepoint la session est gérée au niveau de la ferme et est donc géré via la base de données. plus d'infos ici
    • Marqué comme réponse Ahmed MEHDI mercredi 2 novembre 2011 20:23
    mercredi 28 octobre 2009 09:47
    Modérateur
  • Bonjour Mehdi,

    Est-ce que vous avez résolu votre problème ?

    Merci d’avance de tenir la communauté informée sur la suite de vos démarches.

    Cordialement,
    aelassas.free.fr
    vendredi 28 octobre 2011 22:54
    Auteur de réponse