Обычно я требую аутентификацию для контроллера, как это:
Namespace Controllers
<Authorize(Users:="user1")>
Public Class Module1Controller
Inherits ApiController
' GET: api/Module1
Public Function GetValues() As IEnumerable(Of String)
Return New String() {"This", "is", "Module1", System.Web.HttpContext.Current.User.Identity.Name}
End Function
Но вместо этого мы хотим пройти аутентификацию, используя тот же метод, за исключением того, что список пользователей извлекается из таблицы локальной базы данных (в SSMS) вместе с контроллерами, к которым они имеют доступ, и проверяет их, чтобы убедиться, что они иметь доступ к определенному контроллеру (Module1 в этом примере). Итак, я выполнил несколько примеров по созданию пользовательского атрибута аутентификации, но не могу заставить его работать. Идея состоит в том, чтобы реализовать этот класс:
Public Class CustomAuthorize
Inherits AuthorizeAttribute
Protected Function AuthorizeCore(ByVal httpContext As HttpContextBase) As Boolean
Dim users As String() = {"user1", "user2"}
If users.Contains(httpContext.User.Identity.Name) Then Return True
Return False
End Function
End Class
, где массив строк в действительности будет заполнен из запроса к базе данных, а затем будет использоваться <CustomAuthorize>
в верхней части контроллера вместо <Authorize(Users:="user1">
... Но когда я его запускаю, он никогда не превращается в CustomAuthorize класс. Любая помощь приветствуется.