我正在尝试创建一个可以在我的控制器操作中设置的属性,在该操作中我可以检查用户是否具有某种角色。 我知道使用标准的asp.net身份验证已经可以了,但我没有使用它。
所以我想要完成的是:
[Role("Admin", "SuperUser")]
public ActionResult SafeCourse()
我构建了这个:
public class AdminAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
现在回答.....我想将用户重定向到某个控制器/操作,或者当他/她没有正确的角色时,如果某些视图无法实现。 但我不是在通常的背景下(=控制器),我有点迷失了:)
米歇尔
答案 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中的一个很好的可扩展性点,但没有多少开发人员知道它。