6

我有 5 年的 ASP.NET Web 窗体经验,而且我是 ASP.NET MVC 的新手。我现在正在尝试通过一些教程、视频教程和书籍来学习 MVC。
我正在使用 Visual Studio 2012 和全新的 ASP.NET MVC 4 构建一个小的 Web 应用程序来管理我的共同基金投资组合。这应该让我进入新模式并学习很多新东西......
我的应用程序也应该让其他一些朋友也这样做。所以它必须管理不同用户的投资组合
我首先使用实体​​框架代码构建了一个小数据库,所以我有一些基本模型:基金、投资组合、共享、存款、来源和用户。一个用户可以拥有许多投资组合,其中包含许多资金。每个用户都有自己的存款清单。每个基金都有许多股票价值(一天)。
Source 模型只是一个表格,我在其中为每个网站来源放置了一个 URL,用于特定基金的份额数据。所以,一只基金有很多来源。然后,我每天使用一次爬虫类从这些网站获取数据。
这是应用程序的主要结构。现在,我需要知道什么是最好的方法:

1)管理用户的帐户
我应该在我的数据库上集成 ASP.NET 成员数据库结构并使用它而不是我的自定义用户表来管理用户吗?

2) 管理用户内容:投资组合、资金等。 在 MVC 模式中,实现身份验证和所有授权验证以使用户获得自己的数据
最简单最优雅的方式是什么?我是否需要在每个控制器的每个操作中检查这一点?

那么,换句话说,我必须如何实现我的控制器?例如:

[Authorize]
public class PortfolioController : Controller
{
    private FundMonitorContext db = new FundMonitorContext();

    public ActionResult Index()
    {
        // Check user ID and give back to the view only his portfolios...

        var portfolio = db.Portfolios.List();
        return View(portfolio.ToList());
    }

    ...

    public ActionResult Details(int id = 0)
    {
        ...
    }

    //Other actions...
}

我真的很感激每一个建议!

4

2 回答 2

0
  1. 这是您必须自己做出的选择,但我喜欢创建自己的 Membership Provider,这并不难。使用您自己的提供商,您可以按照自己的方式进行制作,不像 10 年前微软认为的很酷。示例: http: //www.codeproject.com/Articles/165159/Custom-Membership-Providers
    在 .NET 4.5 中,使用 SimpleMembershipProvider 创建您自己的提供程序更加容易。

  2. 使用 [Authorize] 属性,您告诉控制器只接受授权用户。当用户登录时,您可以将用户名/用户 ID 放在 FormsAuthentication cookie 中,这样您就可以很容易地获取用户的用户名/用户 ID。如果您想在其中放入更多数据,您还可以在 cookie 中创建 Authtication ticktes。

    为了更容易测试,我几乎不建议在 HttpContext.User 和 IPrincipal 之间创建绑定,http://www.hanselman.com/blog/IPrincipalUserModelBinderInASPNETMVCForEasierTesting.aspx

于 2012-09-17T13:27:36.147 回答
0

使用 Identity 2.0 进行身份验证和授权。我发现这个博客http://typecastexception.com/post/2014/04/20/ASPNET-MVC-and-Identity-20-Understanding-the-Basics.aspx很有帮助。基本上,您将获得基于声明的身份验证,然后可以使用 AuthorizeAttribute 装饰您的操作,例如

[Authorize(Roles="Admin, Moderators")]
public ActionResult MyAction(...)

您可以通过控制器中的 User.Identity 属性查看声明。

于 2015-05-19T04:07:30.157 回答