Я обновил старый проект ASP.Net Mvc, который использует Servicestack с 4.0.40 до 4.5, но я видел, что при вызове base.HasRole я должен передать IAuthRepository, мне было интересно если есть способ, чтобы получить его из ServiceStackController или в IAuthSessionИзвлечь IAuthRepository из ServiceStackController
Рассмотрим следующий фрагмент
protected override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
{
ViewBag.UICulture = this.UICulture ?? "it-IT";
ViewBag.MiniProfiler = AppSettings.Get<bool>(Resources.MiniProfilerKey, false);
if (UserSession.IsAuthenticated)
{
ViewBag.IsAdmin = this.UserSession?.HasRole(RoleNames.Admin) ?? false;
if (!String.IsNullOrEmpty(this.UserAuthName))
{
ViewBag.UserName = this.UserAuthName;
}
var userSession = UserSession as IFMSAuthUserSession;
if (userSession != null)
{
userSession.UserImpersonated = GetImpersonatedUser(Module);
var menu = userSession.Menu?.Clone();
if (menu == null)
{
int t = 0;
}
ViewData[Resources.ModulesData] = userSession.GetAuthorizedModules().Skip(1); //salta home
ViewData[Resources.MenuData] = menu;
ViewData[Resources.BreadCrumbData] = menu?.LightMenu(Regex.Replace(Request.Url.AbsolutePath, "/$", ""));
}
}
}
, который определен в абстрактном классе
public abstract class BaseController<T> : ModuleController<T>
where T : class, ServiceStack.Auth.IAuthSession
где ModuleController является
public abstract class ModuleController : ModuleController<MyAuthUserSession>
{ }