在我的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的参数,该参数需要执行看似沿着所需路径传递的内容。重定向。
答案 0 :(得分:1)
我认为您还应该覆盖OnAuthorization
方法。这有一个AuthorizationContext
参数,可以让您将结果设置为您喜欢的RedirectResult
...