MVC4表单身份验证Active Directory自定义授权属性

时间:2013-04-20 20:43:03

标签: c# asp.net-mvc-4 active-directory authorization forms-authentication

在我的C#MVC4应用程序中,我使用基于表单的身份验证和Active Directory。我有一个自定义的AD会员提供商。我已成功测试它可以读取和验证用户所属的组。现在,我试图创建一个自定义授权属性,它将执行以下操作:

if (user is logged-in/not timed-out/authenticated)
{
   if (user's role is equal to role 1 or role 2)
      {
        return a specific view or (preferably) perform a specific redirect to action
      }
   else
      {
       return a different specific view or (preferably) perform a different specific     redirect to action
      }
}
else
    {    
     return View
    }

这是我到目前为止所做的:

public class AuthorizeEditAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (httpContext.Request.IsAuthenticated)
            {
                if ((httpContext.User.IsInRole("group1")) || (httpContext.User.IsInRole("group2")))
                {

                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
}

我无法弄清楚如何执行重定向任务。我看过这个讨论如何进行重定向的post,但是我不明白如何将它与我到目前为止的结合起来。特别是因为我认为我必须使用AuthorizeCore来访问httpcontext.user以进行我执行的第一次检查,并且我不知道如何传入另一个类型为AuthorizationContext的参数,该参数需要执行看似沿着所需路径传递的内容。重定向。

1 个答案:

答案 0 :(得分:1)

我认为您还应该覆盖OnAuthorization方法。这有一个AuthorizationContext参数,可以让您将结果设置为您喜欢的RedirectResult ...