首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC检查从数据库返回的用户是否是活动用户?

MVC检查从数据库返回的用户是否是活动用户?
EN

Stack Overflow用户
提问于 2017-01-06 10:27:09
回答 1查看 399关注 0票数 0

我在根据返回的项从数据库对选定用户进行身份验证时遇到问题。我已经找到了一个解决方案,但是我并不认为它是正确的(尽管它是有效的)。

下面是正在发生的事情(简化)。

我有以下类连接到数据库:

代码语言:javascript
复制
public class Company
{
    [Key]
    public int Id { get; set; }
    public string CompanyName { get; set; }
    public string Description { get; set; }               
    public ApplicationUser CEO { get; set; }
}

这意味着一家公司可以有一位首席执行官(一家公司的所有者),但首席执行官可以有多家公司(目前情况不同,只是解释一下)。

然后我有一个Controller CompaniesController,如下所示:

代码语言:javascript
复制
public IActionResult Index()
{
    var items = _context.Companies.Include(n=>n.CEO).ToList();
    return View(items);
}

返回数据库中所有公司的List<Company>。此外,如果我不进入.Include(n=>n.CEO),那么首席执行官字段将为空。

最后,在视图上,我有以下内容:

代码语言:javascript
复制
@foreach (var item in Model)
{
    <tr>
        <td>@item.CompanyName</td>
        <td>@item.Description</td>

        @if (@item.CEO?.Email == User.Identity.Name)
        {
            //Show edit button for CEO
            <td><a asp-action="Edit" asp-route-id="@item.Id">Edit</a></td>
        }
        else
        {
            //Logged user is not expected user therefore insert empty column and do not show button
            <td></td>
        }
    </tr>
}

我检查从我的模型返回的CEO是否主动登录用户的方式是通过比较他们的电子邮件地址(用户需要被授权进入这个页面,因此他将始终被登录)。

问题:是否有更好、更优雅的方法来检查活动用户是否是List<Company>中每一项的首席执行官,或者这是一种正确的方法?

此外,我将用户数据存储到Company数据库表的方式正确吗?我采用了本机标识模型,它在数据库中自动生成4或5个标识表,因此,当我在SQL数据库中检查我的首席执行官字段时,我可以看到这只是对UserId的引用。

如能就此事提供任何帮助/建议,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-01-06 11:39:02

1:您可以编写将返回的助手方法。

代码语言:javascript
复制
def method(signed_in_user, company_id)
  # it will return if the user is CEO of that company id or Not
end

他说:你可以让过滤器显示所有的公司和拥有的公司,如引导数据切换。

3:您可以进行两个数据库调用: 1: user.companies(他是首席执行官) 2: companies.where(signed_in用户不是首席执行官)编写您的for循环。

我不喜欢C#编程,但这种模式可能会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41503647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档