Что обычно происходит, это ...
Когда пользователь заходит на вашу страницу, если аутентификация / авторизация активна, возникает событие Application_Authentication. Если вы не используете проверку подлинности Windows для чего-то вроде Active Directory, объекты IPrincipal и Identity не будут вам доступны, поэтому вы не сможете получить доступ к методу User.IsInRole (). Однако вы МОЖЕТЕ сделать это, добавив следующий код в файл Global.asax:
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim formsAuthTicket As FormsAuthenticationTicket
Dim httpCook As HttpCookie
Dim objGenericIdentity As GenericIdentity
Dim objMyAppPrincipal As CustomPrincipal
Dim strRoles As String()
Log.Info("Starting Application AuthenticateRequest Method...")
httpCook = Context.Request.Cookies.Get("authCookieEAF")
formsAuthTicket = FormsAuthentication.Decrypt(httpCook.Value)
objGenericIdentity = New GenericIdentity(formsAuthTicket.Name)
strRoles = formsAuthTicket.UserData.Split("|"c)
objMyAppPrincipal = New CustomPrincipal(objGenericIdentity, strRoles)
HttpContext.Current.User = objMyAppPrincipal
Log.Info("Application AuthenticateRequest Method Complete.")
End Sub
При этом в сеанс браузера будет добавлен файл cookie с надлежащими учетными данными пользователя и роли, доступ к которым можно получить в веб-приложении.
В идеале, ваш пользователь будет играть только одну роль в приложении, поэтому я считаю, что именно поэтому у вас есть доступный метод проверки роли. Было бы достаточно легко написать вспомогательный метод для вас, который будет перебирать список ролей в приложении и проверять, в какой роли они находятся.