37 messaggi dal 30 maggio 2008
Ciao A tutti,
dopo qualche ricerca su internet ho trovato una soluzione che cercavo al riguardo un forms authentication per WPF.
L'esempio dopo ho preso l'idea si basa sul Client Application Services cosi ho creato due progetti in Wpf un ClientApp.csproj e l'Application Service Host(AppServices.csproj) con ASP.NET Web Service Application ho settato tutti i paramemetri neccesari nella configurazione Web.Config e ho aggiunto due classi, sempre nel progetto AppServices,TestMembershipProvider.cs eTestRoleProvider.cs ,cosi facendo posso crearmi users e roles nelle due classi e posso autenticarmi nella applicazione senza problemi .
Ma Adesso vorrei cambiare password agli users e non so come applicare questa funzione

Nella classe TestMembershipProvider.cs ho creato gli users con questo procedimento:
 public class TestMembershipProvider : MembershipProvider
{
    private System.Collections.Hashtable users = null;
      
   internal static string ManagerUserName = "Manager".ToLowerInvariant();
   internal static string ManagerPassword = "ThaoThao".ToLowerInvariant();

  public override void Initialize(string name,
   System.Collections.Specialized.NameValueCollection config)
        {     
           users = new System.Collections.Hashtable();
           users.Add(ManagerUserName, ManagerPassword);
           base.Initialize(name, config);
        }

 public override bool ValidateUser(string username, string password)
        {
            if (users.ContainsKey(username.ToLowerInvariant()))
            {
   return password.Equals((string)users[username.ToLowerInvariant()])  ;
            }
           return false;          }
}



questo e il codice che uso per creare gli users ma adesso non ho idea che codice usare per validare il metodo :
public override bool ChangePassword(string username, string oldPassword, string newPassword){}

Il mio scopo e cambiare la password per gli utenti e crearmi un form nel CLientApp per eseguire questa operazione.

Se questo puo essere d'aiuto posto il codice dell'autenticazione :
 
public partial class Window1 : Window
{
   public Window1()
        {
            Membership.ValidateUser(String.Empty, String.Empty);
            InitializeComponent();
           }

  private void Windowd_Load(object sender, RoutedEventArgs e)
        {
            if (!Thread.CurrentPrincipal.Identity.IsAuthenticated)
            {
                MessageBox.Show("Invalid credentials.PLease....");
              this.Close();

                return;
            }
            if (Thread.CurrentPrincipal.IsInRole("manager"))
            {
                managerOnlyButton.Visibility = Visibility;
                DataGridEmployee.Visibility = Visibility;
            }}
}


Vi chiedo se avete qualche consiglio come validare il metodo ChangePassword cosi da modificare la password o se devo cambiare impostazione del codice.

Vi Auguro buona giornata

Ciao
Modificato da noninoni il 11 febbraio 2009 07.25 -
Beh l'hai detto te, devi implementare ChangePassword
public override bool ChangePassword(string username, string oldPassword, string newPassword){
if (users.ContainsKey(username.ToLowerInvariant())) 
{ 
  users[userName] = newPassword;
  return true;
}
else
  return false;
}


Però occhio perché tu stai usando un Hashtable per memorizzare gli utenti.
Se l'applicazione cade perdi tutto. Non credo che sia quello che vuoi. Dovresti andare sul database.
Infine, non è obbligatorio usare la Membership API con un servizio che la espone e poi interrogarla da un'applicazione web. Questa tecnica è comoda se oltre all'applicazione windows, hai anche servizi e applicaizoni web. In teoria il codice di validazione ecc lo puoi portare tutto sull'applicazione windows, non credi?

Ciao

Il mio blog
Homepage
37 messaggi dal 30 maggio 2008
Ciao Ricciolo,

tu hai perfettamente ragione,io vorrei usare tutto il codice nella mia Wpf Application anche perche non conosco ASP.Net e altre tecniche al riguardo.
Di sicuro vorrei crearmi un database ed usare lo stesso procedimento ma vorrei trovare qualche esempio online per crearmi questa caratteristica.
io devo creare un applicazione dove ci sono molti Users con diverse Roles e non ho mai fatto questa prima e questa applicazione dve essere intallata su più di 15 computer.
Infatti se hai qualche link da mostrarmi vorrei esserti grato per quello.
Dai miei pochi mesi di esperienza come programmatore non ho l'esperienza adatta per crearmi da solo un programma con questa caratteristica ma non sono sfiducioso .
Adesso provo ad applicare il tuo codice e cercare se posso cambiare password dopo ti farò sapere.

Grazie dei tuoi consigli .

CIao
37 messaggi dal 30 maggio 2008
Ciao Ricciolo,
ho aggiunto il tuo codice nel metodo ChangePassword e ho provato qualche esempio per cambiare la password ma non sono risucito a concludere nulla .
Per cambiare la password i uso questo codice
 Membership.Provider.ChangePassword(String.Empty, String.Empty, String.Empty);



ma niente di che ,ho anche qualche dubbio come impostare il form,(io vorrei cambiare la password inserendo la nuova password in un textbox per cambiare la vecchia password) cosi ti chiedo qualche consiglio per risolvere questa passo.

Buona Giornata.

Ciao
Modificato da noninoni il 11 febbraio 2009 16.55 -
Modificato da noninoni il 11 febbraio 2009 17.10 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.