/// <inheritdoc/> /// <remarks> /// Когда <see cref="checkLocalAccess"/> - true (передаётся через конструктор атрибута), /// то помимо наследуюемой логики также проверяется наличие пользователя в локльной БД. /// Если пользователя нет, то атрибут передаресует на страницу ~/Account/AccessDenied, /// (см <see cref="Site1.Mvc5.Controllers.AccountController.AccessDenied"/>). /// </remarks> protected override bool AuthorizeCore(HttpContextBase httpContext) { var authorized = base.AuthorizeCore(httpContext); if (!authorized) { return(false); } if (!IdSrvConnection.IsAccessBlocked(httpContext) && this.checkLocalAccess) { string idsrvUserId = IdSrvConnection.GetUserId(httpContext); string userLogin = IdSrvConnection.GetUserName(httpContext); UserProfile userProfile = null; using (var context = new AccountsContext()) { userProfile = context.UserProfiles.Where(p => p.IdSrvId == idsrvUserId).FirstOrDefault() ?? context.UserProfiles.Where(p => p.Login == userLogin).FirstOrDefault(); } if (userProfile == null) { httpContext.Response.Redirect("~/Account/AccessDenied"); } return(userProfile != null); } return(true); }
public async Task <ActionResult> UserProfile() { string idsrvUserId = await IdSrvConnection.GetUserIdAsync(this.HttpContext); string userLogin = await IdSrvConnection.GetUserNameAsync(this.HttpContext); UserProfile userProfile = null; using (var context = new AccountsContext()) { userProfile = context.UserProfiles.Where(p => p.IdSrvId == idsrvUserId).FirstOrDefault() ?? context.UserProfiles.Where(p => p.Login == userLogin).FirstOrDefault(); } if (userProfile == null) { return(this.HttpNotFound()); } return(this.View(userProfile)); }
public async Task <ActionResult> AccessDenied() { string userName = await IdSrvConnection.GetUserNameAsync(this.HttpContext); return(this.View((object)userName)); }