Zobrazení button pouze admin   otázka

ASP.NET/IIS

Zdravím,chtěl bych se zeptat jak udělat to, aby byl níže uvedený button viditelný pouze pro admina...

<asp:Button class="new-aqua" runat="server" CausesValidation="True" Text="Přidat zápas" PostBackUrl="~/Admin/NovyZapas.aspx" />

Děkuji předem za odpověď. A Zároveň přeji krásné prožití Vánočních svátků :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Můžeš to udělat tak, že v Loadu dané stránky nastavíš pro Button vlastnost Visible na hodnotu Falsu pro všechny kromě admina. Button se pak bude renderovat pouze pro admina. V kódu níže se administrátor přihlašuje pod jménem franta.


Dim context As System.Web.HttpContext = System.Web.HttpContext.Current

If Not context.User.Identity.Name = "franta" Then
  btnPridatZapas.Visible = False
  
End If

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Až nato, že nemali by ste kontrolovať meno užívateľa, ale kontrolovať, či užívateľ patrí do role adminov.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To máte pravdu s tím kontrolováním uživatelů, zda patří do role Admin. Když jsem to zde včera psal, tak jsem si to v té rychlosti neuvědomil.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky, mohl by si mi kdyžtak napsat jak přesně to napsat v C#?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Nakonec jsem to vyřešil takhle:

if (User.IsInRole("admin"))

btnPridatZapas.Visible=true;

else

btnPridatZapas.Visible=false;

Funguje to, ale nevím jestli to třeba není hloupý způsob:)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A nestačilo by logicky nastavit jednu hodnotu přímo v definici komponenty,např. visible=false, a pak v případě,že uživatel bude v roli admin,změnit visible=true?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To už je podľa mňa jedno, tak, či onak, to bude viditeľné len pre adminov.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jedno to možná je,co se týče funkčnosti. Ale není dobré nechávat paskvily v kódu,pokud pro to není důvod.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Rozhodně bych se vyvaroval vkládáním takového kódu přímo do prezenční vrstvy. Pokud se pak rozhodnete přidat do oprávnění dalšího uživatele, budete kvůli tomu modifikovat prezentační vsrtvu na 100 místech.

Raději bych připravil třídu, která poskytuje srozumitelné hodnoty, zda uživatel něco může/nemůže. Tu inicializujete před zobrazením formuláře a pouze se jí budete ptát na konkrétní oprávnění.

Například:

btnShowAdminDetails.Visible = authService.CanOpenAdminDetails;
grpAdminControls.Visible = authService.ShowAdminControls;

Další velkou výhodou je, že toto oprávnění lze pak snadno ověřit i přímo v metodách, které mají danou akci provést (například zobrazení rozhraní pro administrátora není jen zneplatnění/schování odkazu, ale také stránky, na kterou odkaz povede).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback