动态用户和角色的具有身份成员身份的自定义身份验证和授权

时间:2020-09-10 14:27:08

标签: asp.net-mvc asp.net-core asp.net-mvc-4 asp.net-mvc-3 asp.net-membership

我们有一个Asp.Net mvc项目,我们要在其中使用 Identity 身份验证和授权的两个表( Teacher Department ) strong>。

在模型的实体下方

部门实体

public class Departement
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Departement_ID { get; set; }
    public string Departement_Name { get; set; }
}

教师资格

public class Teacher
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Teacher_ID { get; set; }
    public string Teacher_Name { get; set; }
    public int? Departement_ID { get; set; }
}

我们要对这两个表应用安全性,但要知道安全性必须在每个表的表级和字段级应用我们不希望因为用户和角色是动态的并且不是固定的,所以使用 [Authorize]属性在控制器和操作级别的代码后面应用固定的授权。

在控制器中显示所有带部门教师的动作下方

[Authorize(Roles = "members,admin")]
public async Task<IActionResult> Index()
{
    List<Teacher_Departement> ilIst = new List<Teacher_Departement>();
    var listData = await (from Teat in _context.Teacher
                            join Dept in _context.Departement on Teat.Departement_ID equals Dept.Departement_ID
                            orderby Teat.Teacher_ID ascending
                            select new
                            {
                                Teat.Teacher_ID,
                                Teat.Teacher_Name,
                                Dept.Departement_Name
                            }
                                            ).ToListAsync();
    listData.ForEach(x =>
    {
        Teacher_Departement Obj = new Teacher_Departement();
        Obj.Teacher_ID = x.Teacher_ID;
        Obj.Teacher_Name = x.Teacher_Name;
        Obj.Departement_Name = x.Departement_Name;
        ilIst.Add(Obj);
    });

    return View(ilIst);
}

我们如何根据用户个人资料显示该教师列表,如果用户无权查阅此列表,则将被剥夺其咨询机会。知道用户和角色列表是动态的,它是在执行期间创建的,因此使用 [Authorize]属性是不可行的

授权也已在每个表的属性级别上完成 ,如果未授权,应用程序必须拒绝用户修改指定的字段

私下

0 个答案:

没有答案