Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC5针对SQL表中的字符串自定义授权属性_C#_Asp.net Mvc_Authorization_Asp.net Identity - Fatal编程技术网

C# MVC5针对SQL表中的字符串自定义授权属性

C# MVC5针对SQL表中的字符串自定义授权属性,c#,asp.net-mvc,authorization,asp.net-identity,C#,Asp.net Mvc,Authorization,Asp.net Identity,我已经阅读了数百篇关于ASP.NET MVC授权属性的文章,我认为我让它变得比应该的更难了。我在ASP.NET identity中设置了一个类,如下所示: public class UserDetails : IdentityUser { public virtual MembershipSerial MembershipSerial { get; set; } } public class MembershipSerial { [HiddenInput(DisplayValu

我已经阅读了数百篇关于ASP.NET MVC授权属性的文章,我认为我让它变得比应该的更难了。我在ASP.NET identity中设置了一个类,如下所示:

public class UserDetails : IdentityUser
{
    public virtual MembershipSerial MembershipSerial { get; set; }
}

public class MembershipSerial
{
    [HiddenInput(DisplayValue=false)]
    public int Id { get; set; }
    [HiddenInput(DisplayValue=false)]
    public string Serial { get; set; }
    [Required]
    [Display(Name="Membership Serial")]
    public string SerialConfirmed { get; set; }
}

public class MyDbContext : IdentityDbContext<UserDetails>
{
    public MyDbContext()
        : base ("EFDbContext")
    {
    }
    public System.Data.Entity.DbSet<MembershipSerial> MembershipSerial { get; set; }
}
注意:属性序列由系统管理员添加,属性
serialconfirm
将由用户添加。属性
serialconfirm
应与后端的序列进行比较,如果结果where ok then应返回true,否则返回false


可能吗?如何使用?

第三种方法只需要
[AllowAnonymous]
属性。另外两个应该在函数中进行检查(如果不匹配,则返回一个错误)@StephenMuecke是的,第三个方法正如您所说,我可以将其设置为
AllowAnonymous
,但是如何对另外两个进行检查呢?这里有一个关于我不明白为什么您需要自定义
AuthorizeAttribute
的详细问题的链接-您不希望用户因为没有正确的权限而再次重定向回登录页面。您的逻辑应该位于function=内部,即调用数据库以获取当前用户
MembershipSerial
,并检查他们对该方法的权限,然后抛出错误或让其出错execute@StephenMuecke我想要
authorized属性
让所有这些员工都变得轻松,你可以用任何方式将此作为答案发布。如何检查用户是否有序列号?authorize属性是一个静态方法,在方法执行之前调用该方法。所以,在authorize属性中访问它之前,需要将其保存在数据库或会话中。我将编写一个poko类和方法,让您对自定义属性有一个基本的了解。
[AuthorizeUser(AccessLevels="Has a valid serial key and can place an order")]
public ActionResult PlaceOrder(int ProductID)
{
   // some code...
   return View();
}
[AuthorizeUser(AccessLevels="Has a valid login and can add items to cart")]
public ActionResult AddToCart(int ProductID)
{
   // some code...
   return View();
}
[AuthorizeUser(AccessLevels="Has no login and valid serialkey, anonymous ")]
public ActionResult Anonymous(int ProductID)
{
   // some code...
   return View();
}