Asp.net mvc 使用MVC创建自定义授权属性

Asp.net mvc 使用MVC创建自定义授权属性,asp.net-mvc,authorization,custom-attributes,Asp.net Mvc,Authorization,Custom Attributes,我对MVC非常陌生,这是我第一次尝试使用它和simplemembership创建站点。我处理的需求是需要同时使用角色和权限 因此,我需要一个与角色类似的额外授权方法。 例如,我需要这个来工作: [授权用户(Permission=“Browse”)] 我已经找到了多个创建自定义授权属性的示例,但到目前为止,还没有一个真正适合我。正在传递的值丢失,我不断得到一个空值异常 我发现了多个类似的问题,但我找到的代码对我来说并不适用。 下面是我根据各种stackoverflow问题中的代码尝试的示例 }

我对MVC非常陌生,这是我第一次尝试使用它和simplemembership创建站点。我处理的需求是需要同时使用角色和权限

因此,我需要一个与角色类似的额外授权方法。 例如,我需要这个来工作: [授权用户(Permission=“Browse”)]

我已经找到了多个创建自定义授权属性的示例,但到目前为止,还没有一个真正适合我。正在传递的值丢失,我不断得到一个空值异常

我发现了多个类似的问题,但我找到的代码对我来说并不适用。 下面是我根据各种stackoverflow问题中的代码尝试的示例


} 问题在于这一行: if(userPermissions.Contains(this.Permission))

此。权限始终为空。 我尝试过这个的多种变体,它总是空的

我可以使用其他一些替代方法,但这不起作用让我发疯。
似乎应该如此。

您在控制器中的属性调用中使用的属性名称似乎与在AuthorizeUser类中指定的名称不同。将属性AccessLevel更改为Permission

像这样:

public class AuthorizeUser : AuthorizeAttribute
{
    public string Permission { get; set; }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
控制器中的调用将设置属性值:

[AuthorizeUser(Permission = "Browse")]
public ViewResult Index()

编辑答案以更正“ReAuthorizeAttribute”中的类名。这是我在自己的系统中使用的东西。
[AuthorizeUser(Permission = "Browse")]
public ViewResult Index()