根据用户ID更改数据库

时间:2013-08-14 05:29:55

标签: c# entity-framework asp.net-mvc-4 entity-framework-5

我真的看了一下,谷歌搜索了这个网站几天,尝试了一些不同的东西,我找不到答案。

所以,我正在尝试创建一个在购买后显示客户信息的Web应用程序。我正在使用VS2012 express和C#,我决定使用MVC4,主要是因为有一个关于ASP.NET的教程非常接近我想做的事情。我不会要求对我的选择发表任何评论,但也不是不受欢迎的。

因此,管理员将在每天结束时输入所有销售信息。我们将客户电话号码记录为我们销售协议中的帐号,因此我的想法是,为了保持简单,只需使用客户电话号码作为Web应用程序的登录。此外,这样,当客户端登录到站点以查看数据库时,数据库将自动过滤,以便特定客户端只能看到他们的事务。

我遵循的教程是here

我发现这是需要应用过滤器的点,但我在这方面遇到了很多麻烦。 控制器名为“MainController” 数据库名为“Main”,表是“Mains” “AccountNumber”是db中应与当前用户ID匹配的字段

public ActionResult Index()
{
    return View(db.Mains.ToList());
}

据我了解,我必须在上面放置[InitializeSimpleMembership],然后抓取UserId,然后将其定义为过滤器。

1 个答案:

答案 0 :(得分:1)

首先,您应该选择以下方式之一:

1)将登录和用户信息保存在单独的表中,让SimpleMembership(SM)执行默认作业。

2)使用现有表来存储用户信息并告诉SM哪个表用于。

方法一:

要处理这种方法,您只需手动创建用户(我认为如此),并为负责创建客户的操作方法添加额外的行:

[HttpPost]        
public ActionResult Create(Customer model)
{
    if (ModelState.IsValid)
    {            
        db.Customers.Add(model);
        try
        {
            db.SaveChanges();

            // here it is ...
            WebSecurity.CreateUserAndAccount(model.Phone, model.Password);
        }
        catch 
        {
            insertError = true;
        }
        // .. Other codes ...
} 

现在,您的客户只需使用手机号码登录该网站即可。作为用户名和密码。

要检索与特定用户相关的项目(当前已登录到网站),只需使用以下查询:

public ActionResult Index()
{
    return View(db.Mains.Where(m => m.AccountNumber == User.Identity.Name)
        .ToList());
}

如果您还需要接近方法二,请告诉我更新我的答案并将其放在此处