MVC je dodáván s ActionFilter Pro dosažení ověření identity Asp.NET ve WebFormu nám Microsoft poskytuje tři způsoby, z nichž nejčastěji používaný je ověřování formulářů, které je třeba nakonfigurovat s odpovídajícími informacemi. Například následující konfigurační informace:
To znamená, že naše přihlašovací stránka je Login.aspx, výchozí stránka po úspěšném přihlášení je Default.aspx a naše uživatelské informace používají dva způsoby: ověřování a šifrování. A nejdůležitější je, že musíme napsat autorizační metodu (autorizace níže musí být napsána, jinak je zbytečné používat pouze autentizaci přes formuláře a pak nastavovat relevantní atributy), zamítnout všechny anonymní uživatele a normálně přistupovat pouze přihlášení uživatelé. Poté jsme nastavili tlačítko přihlašování, aby do cookie zapsalo uživatelské jméno (tedy spustit FormsAuthentication.SetAuthCookie(name, false); To je vše. 0 V Asp.Net MVC můžeme také použít autentizaci přes Formuláře, ale pokud to uděláte ve WebFormu, nebude to fungovat. Například nakonfigurujete informace takto:
Nastavíte si přihlášení ve svém Login.aspx, které spustí přihlášení v AccountControlleru, kde je přihlašovací kód:
Po tomto zjištění zjistíte, že vaše přihlášení nebude vykonáno. Jaký je důvod? Proč stejné nastavení nefunguje v MVC? Důvodem je, že mechanismus je jiný, protože nastavíte autorizační metodu, která znemožní přihlášení přihlásit. Tak jak to uděláme? Ve skutečnosti máme v Asp.Net MVC lepší způsob, jak to všechno udělat, nepotřebujeme autorizační metodu, což znamená, že naše konfigurační informace vypadají takto:
Není třeba specifikovat, že anonymní uživatelé se nemohou přihlásit atd. Samozřejmě zjistíte, že jen tohle nestačí, ale musíme systému říct, ke kterým je potřeba se přihlásit, abychom měli přístup. Možná si říkáte, o()〈))o To je moc práce. Není to tak, je to velmi jednoduché, stačí označit [Autorizovat] u akce, která je potřeba autentizovat. Například mám dvě stránky ve složce Domů, Index a Home, a chci, aby byl Index autentizován pro přístup, ale Home ne, takže Indexu stačí dát značku Akce [Autorizovat], tedy tak:
To umožňuje přístup k Indexu po přihlášení, zatímco Home nemusí být přihlášen. Pokud potřebujete autorizovat role, můžete při označování Authorize určit roli (např. [Authorize(Role=Administrators)]), ale musíte použít mechanismus členství poskytovaný Microsoftem, protože vaše role nemůže existovat zbytečně, ale existuje v příslušné databázi, o které jsem psal v jiném blogu. Přizpůsobit ActionFilter Někdy nemusíte být schopni splnit tento typ autentizace, nebo pokud máte pocit, že nejste dostatečně flexibilní, pak to nevadí, Asp.Net MVC vám umožňuje přizpůsobit si ActionFilter. Například nyní upravuji autentizaci:
Pokud je potřeba správa uživatelů, definuji filtry související s rolí:
Ve skutečnosti zjistíte, že výše uvedené dva atributy byly ve skutečnosti vyřešeny vestavěným autorizovaným režimem MVC, a zde vám hlavně říkáme, že je můžete v případě potřeby rozšířit. Tak to je pro dnešek vše! Stažení zdrojového kódu: FormFormsAuthenticationMvc
|