【问题标题】:Navigate inside entity在实体内部导航
【发布时间】:2017-06-29 17:54:27
【问题描述】:

我有一个包含许多实体的网站,所有这些实体都与公司相关联。登录到站点的用户也有一个链接的公司,因此,他只看到与他的公司链接的实体。此外,还有一个管理员,可以与所有公司合作,他选择一家公司,然后像简单用户一样在网站内导航。我认为将这个公司 ID 传递给选择实体的最佳方式是什么。当然,我可以在每个控制器的每个方法中添加 CompanyId:

    public async Task<ActionResult> Index(int? CompanyId)
    {
         //.....
    }

并像这样创建动作过滤器:

public class CompanyIdValueActionFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (!filterContext.HttpContext.User.IsInRole("Superadmin") && filterContext.HttpContext.Request["CompanyId"] != null)
        {
            filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        else
            base.OnActionExecuting(filterContext);
    }
}

并通过该属性标记每个方法并添加到每个链接参数CompanyId,但也许它可以是更有效和灵活的方式?

【问题讨论】:

    标签: asp.net-mvc architecture action-filter


    【解决方案1】:

    由于 CompanyID 与用户相关联,如果您使用任何最新的 asp.net 技术,只需将 CompanyId 添加为用户的声明(声​​明应该可用)。

    An Introduction to Claims

    Access Claim values in controller in MVC 5

    【讨论】:

    • 我理解为用户,与公司相关,我的意思是超级管理员的访问权限,它选择了短期公司......
    • 我看不出会有什么不同。将声明添加到超级用户.. 现在他们在所述公司。
    猜你喜欢
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多