У меня есть следующие требования для реализации списка контроля доступаНастройки Авторизоваться Фильтр атрибут параметра
public class SecurityObject{
public string Key{get;set;}
public string DisplayName{get;set;}
public bool isAllowed{get;set;}
}
public class Role{
List<SecurityObject> AccessibleObjects{get;set;}
}
В настоящее время я использую проверку подлинность форм для базовой авторизации. Ниже мой код
Global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
public override void Init()
{
this.PostAuthenticateRequest += new
EventHandler(MvcApplication_PostAuthenticateRequest);
base.Init();
}
void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpCookie authCookie =
HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
string encTicket = authCookie.Value;
if (!String.IsNullOrEmpty(encTicket))
{
FormsAuthenticationTicket ticket =
FormsAuthentication.Decrypt(encTicket);
string[] userData = ticket.UserData.Split(new string[] { "___" },
StringSplitOptions.None);
string[] roles = null;
if (userData.Length > 1)
{
roles = userData[1].Split(',');
}
MyCustomIdentity identity = new MyCustomIdentity(ticket);
GenericPrincipal principle = new GenericPrincipal(identity, roles);
HttpContext.Current.User = principle;
}
}
}}
Мой текущий класс контроллера
public class AdminController : Controller
{
[HttpPost, Authorize, ValidateAntiForgeryToken]
public ActionResult SaveUser(UserDetailViewModel viewModel)
{
}
}
Мой класс контроллера Target
public class AdminController : Controller
{
[HttpPost, Authorize(ACLKey="USR_SAVE"), ValidateAntiForgeryToken]
public ActionResult SaveUser(UserDetailViewModel viewModel)
{
}
}
Я хочу, чтобы мой метод действия должны быть оформлены с ACLKey, и я хотел бы проверить, имеет ли роль пользователя данный ключ и на основании этого я ed для выполнения или возврата страницы HttpUnauthorizedResult, даже для запросов Ajax из jQuery.
Я упоминал много как Customizing authorization in ASP.NET MVC Но я не нашел способ выполнить проверку подлинности обеих форм и мою обычную проверку ACLKey.
Как разобрать значение USR_SAVE
и обработать пользовательскую аутентификацию с помощью CustomAuthorizeFilter?
Как насчет использования 'IAuthorizationFilter' здесь? Я только что опубликовал свой ответ по этому вопросу –
Вы правы, я должен был использовать этот интерфейс. Слишком рано утром здесь :-) –
Ницца. Ваш ответ был полезен, и это заставляет меня отвечать :) –