Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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# 如何使用ASP.NET标识将自定义验证应用于ASP.NET MVC5中的角色提供程序?_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 5_Asp.net Identity - Fatal编程技术网

C# 如何使用ASP.NET标识将自定义验证应用于ASP.NET MVC5中的角色提供程序?

C# 如何使用ASP.NET标识将自定义验证应用于ASP.NET MVC5中的角色提供程序?,c#,asp.net,asp.net-mvc,asp.net-mvc-5,asp.net-identity,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 5,Asp.net Identity,我已使用新属性修改了UserRole实体。我需要验证用户登录并根据这些属性生成基于角色的菜单 public class ApplicationUserRole : IdentityUserRole { /// <summary> /// Initializes a new instance of the <see cref="ApplicationUserRole"/> class. /// </summary> public

我已使用新属性修改了UserRole实体。我需要验证用户登录并根据这些属性生成基于角色的菜单

public class ApplicationUserRole : IdentityUserRole
{
    /// <summary>
    /// Initializes a new instance of the <see cref="ApplicationUserRole"/> class.
    /// </summary>
    public ApplicationUserRole()
        : base()
    {
        this.ValidFrom = DateTime.Now;
        this.ValidTo = DateTime.Now;

    }

    /// <summary>
    /// Gets or sets the valid from.
    /// </summary>
    /// <value>The valid from.</value>
    public virtual DateTime? ValidFrom { get; set; }

    /// <summary>
    /// Gets or sets the valid to.
    /// </summary>
    /// <value>The valid to.</value>
    public virtual DateTime? ValidTo { get; set; }

 }
公共类ApplicationUserRole:IdentityUserRole
{
/// 
///初始化类的新实例。
/// 
公共应用程序Serrole()
:base()
{
this.ValidFrom=DateTime.Now;
this.ValidTo=DateTime.Now;
}
/// 
///获取或设置有效的起始值。
/// 
///有效期从。
公共虚拟日期时间?从{get;set;}有效
/// 
///获取或设置有效的。
/// 
///有效期为。
公共虚拟日期时间?有效到{get;set;}
}

如果登录日期在有效日期范围内不存在,则需要显示用户登录过期消息,如果分配了多个角色,并且过期了一个角色,则需要在菜单列表中隐藏这些菜单项。

您可以使用自定义ValidationAttribute

using System.ComponentModel.DataAnnotations;


public class ValidDates : ValidationAttribute
{
    protected override ValidationResult 
            IsValid(object value, ValidationContext validationContext)
    {
        var model = (Models.Employee)validationContext.ObjectInstance;

        DateTime _validFrom = Convert.ToDateTime(model.validFrom);
        DateTime _validTo = Convert.ToDateTime(model.ValidTo);  

        if(validation condition is true)                
               return ValidationResult.Success;             
         else
             return ValidationResult.failure;                       
        
    }
}
并使用属性ValidDates装饰ApplicationUserRole类

[ValidDates]
public class ApplicationUserRole : IdentityUserRole
{  //other class implementation  }

有关更多信息,请检查

谢谢@Laxmikant此处我需要管理基于角色的网站菜单,您也可以访问基于角色的菜单项。在本文中,我将介绍MVC 4示例,我正在使用MVC 5 Sitemap创建基于角色的菜单列表