Vývojářský blog Tomáše Jechy

Poslední články

Období
RSS Feed
.NET Tips 2D 3D Aplikace ASP.NET C# HTML+CSS Internet Javascript Office Silverlight SQL VB.NET VB6 VbNet.cz Vista VS Život, vesmír a vůbec Všechny články
AuthorizeAttribute je základním autorizačním principem v ASP.NET MVC. Odekorování akce nebo celého controlleru dovoluje omezit přístup pouze pro seznam uživatelů, popřípadě rolí poskytovaných RoleProviderem.
V případě neúspěšné autorizace se vrací HttpUnauthorizedResult, který zapíše do výstupu HTTP kód 401 (neautorizovaný přístup) a z něj se provede přesměrování na přihlašovací obrazovku. Pokud chcete po neúspěšné autorizaci přesměrovat jinam, lze to připravit jednoduchým rozšířením právě AuthorizeAttribute:
/// <summary>
/// Atribut rozšiřující <see cref="AuthorizeAttribute"/> o možnost přesměrovat na jinou adresu než je defaultní přihlašovací v případě neúspěšné autorizace.
/// </summary>
public class AuthorizeRedirectAttribute : AuthorizeAttribute
{
/// <summary>
/// Vrací nebo nastavuje akci, na kterou se provede přesměrování při neúspěšné autorizaci
/// </summary>
public string RedirectAction { get; set; }
/// <summary>
/// Vrací nebo nastavuje controller, na který se provede přesměrování při neúspěšné autorizaci
/// </summary>
public string RedirectController { get; set; }
/// <summary>
/// Vrací nebo nastavuje route values, které se předají akci při přesměrování při neúspěšné autorizaci
/// </summary>
public object RedirectRouteValues { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
// neuatorizovany pozadavek?
if (filterContext.Result is HttpUnauthorizedResult)
{
// vygenerovat adresu pro presmerovani
string redirectUrl = new UrlHelper(filterContext.RequestContext).Action(RedirectAction, RedirectController, RedirectRouteValues);
// presmerovat
filterContext.Result = new RedirectResult(redirectUrl);
}
}
}
Takto upravenému atributu předáte akci a případně i controller a route values a přesměrování při neautorizovaném přístupu bude obstaráno automaticky. Například:
[AuthorizeRedirect(RedirectAction = "RegistrationAbout")]
public ActionResult MyProfile()
[Zobrazit článek]
Datum: 28. 1. 2010 13:41
Kategorie: ASP.NET, C#
Nedávno se mi stala nepříjemnost s internetovým připojením. V důsledku výpadku proudu mi odešel ADSL router (pravděpodobně kvůli přepětí v telefonní nebo napájecí síti). Zašel jsem na prodejnu a ihned si nový router chtěl koupil. Dokonce měli jeden na skladě.
Rozhodl jsem se platit kartou. Čekal jsem, že ihned poputuje do terminálu, potvrdím částku a zadám PIN. K mému překvapení se situace vyvíjela trochu jinak. Obsluha začala cosi z karty opisovat do počítače. Nevím které údaje, nevím kam je zapisovala, nevím na co je potřebovala. Vše, co je k provedení a zaevidování transakce potřeba lze zjistit z komunikačního rozhraní terminálu. A nemusím snad upřesňovat, že údaje na kartě jsou to jediné, co dělí kohokoliv od anonymní platby na internetu. Možná je to normální postup, ale mě se to stalo poprvé a dost mě to zarazilo.
Dožadoval jsem se tedy vysvětlení, na co a jaké údaje potřebují. Odpovědi byly velice neuspokojivé. Například jsem se dozvěděl, že si opisují číslo účtu - což byla pro mě velká novinka, nevím totiž o tom, že bych číslo účtu na kartě měl. Ale dobře, asi si pletou číslo účtu a karty. Co jsem ale za boha nemohl zjistit je důvod, proč údaje zapisují ručně a nenechají si je poslat z terminálu, popřípadě proč je neopíšou z výtisku. Nemůžou se přeci zaručit za všechny zaměstnance, že si některý z nich neopíše nenápadně i konfirmační číslo někam do poznámkového bloku a pak si z mé karty neudělá osobního sponzora.
Máte podobné zkušenosti? Zdá se vám tenhle přístup také tak podivný a nebezpečný jako mě?
[Zobrazit článek]
Datum: 26. 1. 2010 18:06
Kategorie: Život, vesmír a vůbec
Pokud chcete psát obyčejnou 2D hru v XNA, možná se vám bude hodit následující seznam článku. Jsou v anglickém jazyce.
Články jsou kratší a nabízejí ke stažení zdrojové kódy.
[Zobrazit článek]
Datum: 16. 1. 2010 15:02
Kategorie: 2D, .NET Tips
Pokud se někdy dostanete do kontaktu s herním XNA enginem, je dost pravděpodobné, že mezi vaše přání bude patřit i vykreslování textů na obrazovku. XNA nabízí možnost použití tzv. spritefontů. Tedy písma, které se při kompilaci vyrenderuje a nás tak nemusí zajímat, zda je písmo na cílovém stroji nainstalováno (v případě Xboxu je to naprosto pochopitelné). Při vytvoření souboru spritefont do složky Content zjistíme, že se jedná o běžný XML soubor definující velikost, typ a rozsahy znaků, které se připraví při kompilaci do projektu.
Pokud se při základním nastavení pokusíte vyrenderovat diakritiku, příliš neuspějete. Implicitní rozsah zahrnutých znaků ji totiž neobsahuje. Získáte tuto chybu:
The character 'ř' (0x0159) is not available in this SpriteFont. If applicable, adjust the font's start and end CharacterRegions to include this character.
Název parametru: character
Připravil jsem proto seznam rozsahů, které zahrnou všechny “české” znaky v podobě malého i velkého písmene:
<CharacterRegion><Start>Á</Start><End>Á</End></CharacterRegion>
<CharacterRegion><Start>Č</Start><End>Č</End></CharacterRegion>
<CharacterRegion><Start>Ď</Start><End>Ď</End></CharacterRegion>
<CharacterRegion><Start>É</Start><End>É</End></CharacterRegion>
<CharacterRegion><Start>Ě</Start><End>Ě</End></CharacterRegion>
<CharacterRegion><Start>Í</Start><End>Í</End></CharacterRegion>
<CharacterRegion><Start>Ň</Start><End>Ň</End></CharacterRegion>
<CharacterRegion><Start>Ó</Start><End>Ó</End></CharacterRegion>
<CharacterRegion><Start>Ř</Start><End>Ř</End></CharacterRegion>
<CharacterRegion><Start>Š</Start><End>Š</End></CharacterRegion>
<CharacterRegion><Start>Ť</Start><End>Ť</End></CharacterRegion>
<CharacterRegion><Start>Ú</Start><End>Ú</End></CharacterRegion>
<CharacterRegion><Start>Ů</Start><End>Ů</End></CharacterRegion>
<CharacterRegion><Start>Ý</Start><End>Ý</End></CharacterRegion>
<CharacterRegion><Start>Ž</Start><End>Ž</End></CharacterRegion>
<CharacterRegion><Start>á</Start><End>á</End></CharacterRegion>
<CharacterRegion><Start>č</Start><End>č</End></CharacterRegion>
<CharacterRegion><Start>ď</Start><End>ď</End></CharacterRegion>
<CharacterRegion><Start>é</Start><End>é</End></CharacterRegion>
<CharacterRegion><Start>ě</Start><End>ě</End></CharacterRegion>
<CharacterRegion><Start>í</Start><End>í</End></CharacterRegion>
<CharacterRegion><Start>ň</Start><End>ň</End></CharacterRegion>
<CharacterRegion><Start>ó</Start><End>ó</End></CharacterRegion>
<CharacterRegion><Start>ř</Start><End>ř</End></CharacterRegion>
<CharacterRegion><Start>š</Start><End>š</End></CharacterRegion>
<CharacterRegion><Start>ť</Start><End>ť</End></CharacterRegion>
<CharacterRegion><Start>ú</Start><End>ú</End></CharacterRegion>
<CharacterRegion><Start>ů</Start><End>ů</End></CharacterRegion>
<CharacterRegion><Start>ý</Start><End>ý</End></CharacterRegion>
<CharacterRegion><Start>ž</Start><End>ž</End></CharacterRegion>
[Pokračování článku]
Datum: 5. 11. 2009 0:41
Kategorie: VB.NET, C#, Aplikace, VS
Na adrese http://soutez.vbnet.cz/Register.aspx jsme otevřeli registrace. Zaregistrujte se co nejdříve! Pokud nějakou úlohu následně zpracujete odešlete ji formulářem, který se objeví na konci měsíce. Registrace nezavazuje k odeslání řešení.
Dále na adrese http://soutez.vbnet.cz/NetBombingEngine.zip (469 332 bytů) naleznete novou verzi herního enginu NetBombing pro zpracování jedné z úloh.
Nové funkce:
- zrušeno omezení aplikační domény (je tedy možné technologicky využívat další knihovny) - můžete tedy používat teoreticky i F#
- opraveno pár drobností - nic z toho však neovlivní nebo nepoškodí funkčnost již vámi napsaného kódu
- NetBombing.Engine.dll je podepsaná (opět to neovlivňuje nijak kód nebo použití knihovny)
[Zobrazit článek]
Datum: 19. 10. 2009 14:27
Strana 1 z 18 (článků: 88) 123456Další »»»