ja chcąc buforują role użytkownik jest w dla każdego wniosku, że jest w Istnieje kilka miejsc w całej każdej stronie, gdzie gdzie mamy coś takiego:Per-Request dane statyczne w ASP.NET
<% if(Roles.IsUserInRole("RoleName")) {%>
<!-- Conditional Rendering -->
<% } else if(Roles.IsUserInRole("AnotherRole") {%>
<!-- You get the point -->
<% } %>
Ponieważ wszystko jest przechowywane w bazie danych SQL, każde z tych żądań trafia do bazy danych. Wiem, że istnieją sposoby buforowania ról w pliku cookie, ale nie chcę tego robić. W każdym razie, to, co myślałem, było coś takiego.
public static class SecurityUtils
{
public static string[] UserRoles()
{
var context = HttpContext.Current;
if (context == null) return Enumerable.Empty<string>();
string[] roles;
roles = context.Items["UserRoles"] as string[];
if (roles == null)
{
roles = Roles.GetRolesForUser();
context.Items["UserRoles"] = roles;
}
return roles;
}
}
Ktoś widzi jakieś problemy z tym? Wiem, że kiedykolwiek zadzwonię pod numer UserRoles()
, który zajrzy przedmiot w kontekście i być może nie jest to najskuteczniejsza rzecz do zrobienia. To, co naprawdę chcę wiedzieć, to to, czy będzie to buforowanie na żądanie, więc nie ma nakładania się z innymi żądaniami użytkowników.
Masz wołowinę z 'Sesją'? – bzlm
@bzlm - być może role nie są "szeregowalne"? – Oded
@Oded Masz rację. Może 'string []' w przykładowym kodzie w pytaniu odnosi się do tęczy i jednorożca zamiast sekwencji liter i cyfr. – bzlm