Можно ли заблокировать страницу от открытия с использованием Security TrumentEnabled = True
-
04-10-2019 - |
Вопрос
У меня есть пользовательский сайтэмоповочный и рольПровидер, который работает вместе правильно: IsAccessibleToUser
возвращается false
Если роль текущего пользователя не упоминается в SiteMapNode.Roles
для запрашиваемой страницы.
Таким образом, панирумы или меню не показывают элемент.
Но пользователь все еще может ввести сейчас, теперь показал URL-адрес напрямую и открыть страницу. Как я могу заблокировать такое поведение?
Также у меня есть следующие настройки Web.config:
<authorization>
<allow roles="Admin,Manager,Client" />
<deny users="*" />
</authorization>
Решение
public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
var roles = node.Roles.OfType<string>();
if (roles.Contains("*") || (roles.Count(r => context.User.IsInRole(r)) > 0))
{
return true;
}
else
{
throw new InsufficientRightsException();
}
}
Не связан с StackOverflow