Не уверен, правильно ли я понял, но вы хотите использовать атрибут [Authorize]
для работы с вашей пользовательской базой данных пользователей?
Если это так, нужно кое-что проверить:
Чтобы просто разрешить / запретить в зависимости от того, авторизован пользователь или нет, атрибут stock [Authorize]
будет работать просто отлично. Настраиваемая логика входит в действие «Вход в систему», где вы проверяете базу данных с заданными учетными данными и соответственно запускаете куки. Что-то вроде:
public ActionResult Login(string username, string password)
{
bool isValid = //check the database with the given username and password
if(isValid)
{
FormsAuthentication.SetAuthCookie(username, false);
return RedirectToAction("...");
}else
{
return View();
}
}
Если вы хотите также контролировать доступ на основе ролей, я бы сказал, что есть два способа:
Реализация пользовательских провайдеров членства и ролей, что мне не нравится, поскольку я нахожу их довольно бесполезными, и всегда заканчиваю переделкой логики в моих репозиториях
Реализация пользовательского атрибута AuthorizeAttribute, например
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
//Check based on these 2 properties:
// this.Roles
// this.Users
//against httpContext.User
//return true or false to indicate access or deny
}
}