C# 如何使用ASP.NET标识将自定义验证应用于ASP.NET MVC5中的角色提供程序?
我已使用新属性修改了UserRole实体。我需要验证用户登录并根据这些属性生成基于角色的菜单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
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创建基于角色的菜单列表