Можно ли заблокировать страницу от открытия с использованием Security TrumentEnabled = True

StackOverflow https://stackoverflow.com/questions/2899096

Вопрос

У меня есть пользовательский сайтэмоповочный и рольПровидер, который работает вместе правильно: 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();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top