asp.net MVC:在自定义操作属性中重新路由到操作

时间:2010-01-15 15:43:12

标签: asp.net-mvc

我正在尝试创建一个可以在我的控制器操作中设置的属性,在该操作中我可以检查用户是否具有某种角色。 我知道使用标准的asp.net身份验证已经可以了,但我没有使用它。

所以我想要完成的是:

[Role("Admin", "SuperUser")]
public ActionResult SafeCourse()

我构建了这个:

public class AdminAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

现在回答.....我想将用户重定向到某个控制器/操作,或者当他/她没有正确的角色时,如果某些视图无法实现。 但我不是在通常的背景下(=控制器),我有点迷失了:)

米歇尔

2 个答案:

答案 0 :(得分:2)

如果你制作了动作过滤器IAuthorizationFilter,它将在其他类型之前执行...然后在OnAuthorization(AuthorizationContext filterContext)中设置结果。

这样的东西
filterContext.Result = new RedirectResult("/Controller/ActionYouWantToDirectTo");

善,

答案 1 :(得分:0)

正确/正确的方法

Asp.net MVC具有完全符合您需求的可扩展性。您应该编写一个自定义操作方法选择器属性,它将根据属性中的定义实际选择正确的操作方法。

public class RoleAttribute: ActionMethodSelectorAttribute
{
    ...
}

检查有关操作方法选择器的this blog post。 Asp.net MVC中的一个很好的可扩展性点,但没有多少开发人员知道它。