Diskuze: ASP.MVC Update po loginu

C# .NET .NET (C# a Visual Basic) ASP.MVC Update po loginu American English version English version

Avatar
BlugW
Redaktor
Avatar
BlugW:

Hoj,

chtěl bych se zeptát, jak se dá updatovát tabulka po přihlášení uživatele?
Jedu samozřejmě z te šablony co VS vygeneruje.

Mám v AspNewUsers sloupec RegDate což je ok, a pak mám LoginDate, to potřebuji nějak po každém přihlášení updatovat.

Mužete mi poradit jak na to (koukal jsem na metodu edit po scaffoldu, ale nějak nechapu jak to updatuje)? Možna to bude taky někoho zajimat.

Odpovědět 3.6.2014 17:11
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
annihilator
Člen
Avatar
annihilator:

Ahoj,

jaký máš studio a MVC. Já mám 2013 a MVC 5.1.0.0 a žádný RegDate ani LoginDate. Mám to všechno by default.

Každopádně pokud chci hledat kód po loginu, tak není moc logické hledat v metodě Edit. :). Vsadil bych na AccountController a nějakou metodu Login.

Nahoru Odpovědět 3.6.2014 17:58
Hnát se za bystrým zrakem v království jednookých - uzavíráním diskuzí je krátkozraké
Avatar
BlugW
Redaktor
Avatar
Odpovídá na annihilator
BlugW:

Vím, regdate a login date, jsem si tám přidal jak pišu, v edit jsem koukal ja to vlastne pracuje, jelikož update LoginDate je vlastne edit.

Nahoru Odpovědět 4.6.2014 18:00
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Obávám se že takhle se s žádným programátorem nedomluvíš. Oni nemají křišťálovou kouli aby věděli co kdes ty jak udělal a o čem to mluvíš. Základem je vynechat abstraktní pojmy. Tak to s zkusíme ještě jednou.

Ty máš v tabulce pro uživatele dva sloupce navíc. Vůbec jsi nepsal, že sis je tam sám přidal a pokud ano, nenapsal jsi jak. Nezdá se to, ale může to být důležité.

Pak máme nějakou magickou metodu Edit. Jelikož každý Controller může mít Edit bylo by dobrý ji sem hodit. Pravděpodobně půjde o template při použití EF, ale tak pro jistotu...

Osobně tuším, ale nejsem vědma :-)

 
Nahoru Odpovědět 4.6.2014 19:02
Avatar
Andrej Farkaš:

Ak máš vygenerovaný AccountController, tak bude vyzerať asi nejako takto.

// POST: /Account/Login
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindAsync(model.UserName, model.Password);
                if (user != null)
                {
                    await SignInAsync(user, model.RememberMe);
                    // Zalogovať prihlásenie
                    return RedirectToLocal(returnUrl);
                }
                else
                {
                    ModelState.AddModelError("", "Invalid username or password.");
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }

Predtým ako zavoláš ten return RedirectToLocal(re­turnUrl), môžeš robiť aké úpravy chceš. Aspoň teda myslím, že overenia hesla je v tom FindAsync a SignInAsync ti už len prihlási usera. Každopádne, možno by bolo rozumnejšie vytvoriť nejakú log tabuľku, kde budeš zapisovať prihlásenia. Aspoň nebudeš mať len to posledné.

A update...ten objekt user by mal mať aj tie tvoje rozšírené property, takže stačí do tej property LoginDate, dať aktuálny čas a potom (strielam od brucha, neskúšal som) UpdateAsync().

user.LogInDate = DateTime.Now;
UserManager.UpdateAsync(user);
Editováno 6.6.2014 8:59
Nahoru Odpovědět  +1 6.6.2014 8:56
Live. Love. Learn.
Avatar
Odpovídá na BlugW
Andrej Farkaš:

Ešte dodám, že ak si rozšíril toho IdentityUsera, nezabudni aj upraviť ten dbContext, aby pracoval s tým rozšíreným (viď. odstavec Extending the IdentityModel Class with Additional Properties).
http://www.codeproject.com/…ntity-Accoun

Nahoru Odpovědět  +1 6.6.2014 9:04
Live. Love. Learn.
Avatar
Odpovídá na BlugW
Andrej Farkaš:

A do tretice samozrejme oprava (už mi nejde upraviť koment).

await UserManager.UpdateAsync(user);

Každopádne som to otestoval a funguje to takto ;-)

Nahoru Odpovědět  +1 6.6.2014 9:10
Live. Love. Learn.
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Andrej Farkaš
BlugW:

WoW, díky moc, moc jsi mi pomohl :)

Nahoru Odpovědět 6.6.2014 12:07
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Andrej Farkaš
BlugW:

Menši dotaz ještě, jak je to u LogOut ?
Tam musím nějak převzít ID nebo Email uživatele, ale teď nevím jak.

Editováno 6.6.2014 15:54
Nahoru Odpovědět 6.6.2014 15:53
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Odpovídá na BlugW
Andrej Farkaš:
System.Web.Security.Membership.GetUser().ProviderUserKey;
Editováno 10.6.2014 7:45
Nahoru Odpovědět  +1 10.6.2014 7:45
Live. Love. Learn.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.