ASP.NET MVC Hoe om rolgebaseerde of stawinggebaseerde aansigweergawe toe te pas?
-
03-07-2019 - |
Vra
ek wil sekere dele van 'n aansig wys/versteek op grond van stawingstatus of rolle.Vir my beheerderaksies het ek ActionFilterAttribute uitgebrei sodat ek sekere aksies kan toeskryf.
<RequiresRole(Role:="Admin")> _
Function Action() as ActionResult
Return View()
End Function
is daar 'n soortgelyk manier (toeskryf) wat ek in die aansigte kan gebruik?(dus nie so nie: Hoe kan ek 'n aansig skep wat verskillende vertonings het volgens die rol waarin die gebruiker is?)
Oplossing
Jy kan toegang tot die gebruiker se aangemelde rolle kry vanaf die aansig soos volg:
<% if (Page.User.IsInRole("Admin")) { %>
<td>
<%= Html.DeleteButton("delete", model.ID) %>
</td>
<% } %>
en miskien jou uitbreidingsmetode met iets soos:
public static string DeleteButton(this HtmlHelper html,
string linkText, int id)
{
return html.RouteLink(linkText,
new { ID = id, action = "Delete" },
new { onclick = "$.delete(this.href, deleteCompleted()); return false;" });
}
Dit is duidelik dat ek JavaScript gebruik om 'n HTTP DELETE na my beheerder-aksie uit te voer, om te verhoed dat bladsykruipers per ongeluk data uitvee om my bladsye te kry.In my geval brei ek JQuery uit met 'n delete() metode om die HTTP-werkwoord aan te vul.
Ander wenke
Ek het nuut dat dit bestaan het, maar het 'n rukkie geneem om te vind.Hier is wat ek gebruik:
<asp:LoginView runat="server">
<AnonymousTemplate>
You are not logged in yet. Please log in.
</AnonymousTemplate>
<RoleGroups>
<asp:RoleGroup Roles="Admin">
<ContentTemplate>
You are an Admin.
</ContentTemplate>
</asp:RoleGroup>
<asp:RoleGroup Roles="Customers">
<ContentTemplate>
You are a customer.
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
<LoggedInTemplate>
Simple Log in check
</LoggedInTemplate>
</asp:LoginView>
Dit laat jou toe om verskillende inhoud aan verskillende gebruikers te wys op grond van hul aanmeldstatus of geloofsbriewe.