У меня была похожая проблема, когда мне нужно было защитить клиентское приложение / веб-сайт на основе уровня доступа, т.е.sysadmin, admin, user и т. д. Использование web.config было когда-то решением, но, как и вам, мне нужно было предоставить / запретить доступ, не отказываясь от него в web.config.Я закончил тем, что использовал открытую константу на каждой странице, которая описывала минимальный уровень доступа для этой страницы, да, это было немного утомительно, но оно сделало именно то, что мне нужно.Код:
Public Const accesslevel As integer = 999 ' System Admin level, you always want to leave room between levels so if you need to add levels later it's easier to do so.
' In the page load event
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' I have a user class where I store all the user information. I store in in the session.
If not MyUser.AccessLevel >= accesslevel Then
Response.Redirect(Session(camefrom)) '"camefrom" is a Session variable and is set to the page the user came from
End If
End Sub
Да, я понимаю, что это немного утомительно, и, возможно, существует несколько разных способов решения этой проблемы, но я использовал это и продолжаю использовать сегодня.ПРИМЕЧАНИЕ. На некоторых страницах я проверяю уровень доступа ДО того, как перейду на страницу, необходимую из-за состояния сеанса.Этот метод дает мне контроль над каждой страницей и предотвращает обход уровней доступа.