Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich Daten mit einem Event in der Applikation weitergeben?
behindyoû
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

Wie kann ich Daten mit einem Event in der Applikation weitergeben?

beantworten | zitieren | melden

Guten Mittag, liebe Herren und Damen :)

In meiner Anwendung habe ich ein kleines Login eingebaut (Account), jedes Account hat/kann mehrere User haben.
Nun wollte ich, sobald sich der Account eingeloggt hat, seine ID im Event weitergeben um Sie weiter nutzen zu können.

AccountRepository


        public Account CheckAccount(string email, string password)
        {
            Account result = _account.Where(k => k.Email == email && k.Password == password).FirstOrDefault();

            EventSystem.Instance.eventHanlder.GetEvent<AccountDataEvent>().Publish(result.AccountID);
            return result;
            
        }

Nun wollte ich (Ich habe es sowohl im UserRepository als auch im SelectUserViewModel probiert, ledeglich ohne erfolg) die ID weiter bearbeiten bzw nutzen.

        public SelectUserViewModel()
        {
            _repository = new UserRepository();
            SelectedUserCommand = new DelegateCommand(UserSelected);

            EventSystem.Instance.eventHanlder.GetEvent<AccountDataEvent>().Subscribe(accountData);

            Users = _repository.GetUser(AccountID);

        }

        private void accountData(int _accountid)
        {
            AccountID = _accountid;
        }
        private int accountID;
        public int AccountID
        {
            get { return accountID; }
            set { SetProperty(ref accountID, value); }
        }

meine _accountID erhält wie gewünscht den Wert der ID { 1 }
mein AccountID jedoch bleibt weiterhin auf 0.

Nutze ich das Event womöglich falsch?

Ich habe mich mal auf PrismLibary etwas (versucht) schlau gemacht, blicke jedoch die Art wie Prism das nutzt nicht wirklich durch und fand auch keinen Example welches ich gut nachvollziehen konnte.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von behindyoû am .
private Nachricht | Beiträge des Benutzers
behindyoû
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

beantworten | zitieren | melden

Ich habe mein Code nun leicht verändert, komme jedoch trotzdem nicht an mein gewünschtes Ziel. Jemand vielleicht echt ein Rat für mich? So langsam komm ich ans verzeifeln
LoginViewModel


        public LoginViewModel(IEventAggregator _eventAggregator, IRegionManager _manager, AccountRepository _repository)
        {

            manager = _manager;
            eventAggregator = _eventAggregator;
            repository = _repository;

            LoginCommand = new DelegateCommand(ExecuteLogin);
            
        }

        private void ExecuteLogin()
        {
            Account result = repository.AccountAuth(Email, Password);
            if (result != null)
            {
                manager.RequestNavigate("ShellRegion", "SelectUser");
                eventAggregator.GetEvent<AccountLoginEvent>().Publish(true);
                eventAggregator.GetEvent<AccountIDEvent>().Publish(result);
                Email = string.Empty;
                Password = string.Empty;
                Count = 0;
                Msg = "";
            }
            else
            {
                Count += 1;
                Msg = "Account konnte nicht gefunden werden." + " Versuch: " + Count;
                eventAggregator.GetEvent<AccountLoginEvent>().Publish(false);

            }
        }

SelectUserViewModel

       
        public SelectUserViewModel(IEventAggregator _eventAggregator, IRegionManager 
         _regionManager, UserRepository _userRepository)
        {
            eventAggregator = _eventAggregator;
            regionManager = _regionManager;
            userRepository = _userRepository;
            eventAggregator.GetEvent<AccountIDEvent>().Subscribe(accountData);
            Test = "Hallo from Select User";
        }

private void accountData(Account account)
        {
            if (account != null)
            {
                AllUser = userRepository.GetAllUser(account);
                //regionManager.RequestNavigate("ShellRegion", "Main");
                //eventAggregator.GetEvent<AccountLoginEvent>().Publish(true);

            }
            else
            {
            }
        }

UserRepository

        public List<User> GetAllUser(Account account)
        {
            var result = from s in testUsers
                         where s.AccountID ==  account
                         select s;
            return result.ToList();
        }
private Nachricht | Beiträge des Benutzers
behindyoû
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

PubSubEvent: Property übenrimmt kein Wert aus dem Subscribe

beantworten | zitieren | melden

Ok, erledigt. verzeihung. :c
private Nachricht | Beiträge des Benutzers
Taipi88
myCSharp.de - Member

Avatar #avatar-3220.jpg


Dabei seit:
Beiträge: 1044
Herkunft: Mainz

beantworten | zitieren | melden

Hi,

falls du hier noch mal rein schaust:

Was immer du da mit dem Passwort treibst - hör bitte auf damit und nimm ein ordentliches System oder Vorbild für Authentifizierung.

Wer ein Passwort im Klartext im Jahr 2020 speichert dem gehört eigentlich die Schulbank.

Es gibt genug fertige Systeme - und selbst wenn du nicht gewillt bist ein fertiges zu nehmen - dann solltest du dir zumindest die Zeit nehmen nachzuforschen wie man das richtig macht.

LG
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15806
Herkunft: BW

beantworten | zitieren | melden

Zitat von Taipi88
Wer ein Passwort im Klartext im Jahr 2020 speichert dem gehört eigentlich die Schulbank.

.. davon abgesehen ist ein solches Vorgehen mittlerweile sogar gesetzlich verboten.
Ja, mit sowas muss sich ein Entwickler auch beschäftigen.
Zitat von behindyoû
Ok, erledigt. verzeihung. :c
Ein Forum funktioniert so, dass man am Ende die Lösung postet - auch wenn man sie selbst gefunden hat ;-)
[Hinweis] Wie poste ich richtig?
private Nachricht | Beiträge des Benutzers
behindyoû
myCSharp.de - Member



Dabei seit:
Beiträge: 20

Themenstarter:

beantworten | zitieren | melden

Taipi88:
Ich bin mir dessen bewusst, dass Passwörter nicht im Klartext abgespeichert werden.
Da es hier jedoch vorrangig nur um die Übermittlung der Daten geht, spielt meiner Ansicht nach, wie die Daten konstruiert sind, wenig zur Sache.
Im Endprojekt werden sämtliche Daten, welche es erfordern, verschlüsselt in die DB übertragen.

Abt: Ja, Verzeih mir. Ich hatte noch vor, den zweiten Beitrag zu bearbeiten und die Lösung darin zu Posten, kam bisher nur nicht mehr dazu. Ich werde es gleich nachholen. :)
private Nachricht | Beiträge des Benutzers