【发布时间】:2016-02-29 21:34:09
【问题描述】:
我正在编写我的第一个 ASP.NET Web API 应用程序。我熟悉其他 Web 应用程序框架(主要是 Symfony,但也熟悉 Django,以及在较小程度上的 RoR)。
我有点挣扎,以了解从浏览器/前端客户端向 Web 服务器发送请求后发生的事件顺序。
我正在编写一个使用数据库后端的多租户应用程序。我正在使用 ADO 和原始 SQL 来访问数据库,我还需要为每个用户存储大量信息,因此基本上,我为用户创建(或从缓存中获取)预加载的上下文。
这里有一些伪代码,说明了我在 ASP.NET 中想要实现的目标。
namespace myApp.Controllers
{
public class FoobarController : ApiController
{
public Response doLogin(request)
{
var ctx = myApplicationContext.getInstance();
var user = ctx.getUser();
if (!user.isLoggedOn())
{
username = request.getParameter('username');
password= request.getParameter('password');
dbManager = ctx.getDbInstance();
resp = dbManager.internalLogin(username, password);
// Load permissions etc for current user, from db
// Store user info in cache ..
}
}
public Response ActionOne(request)
{
ctx = myApplicationContext.getInstance();
user = ctx.getUser();
if (user.hasPermission('xxx'))
{
}
}
}
}
我的问题是,我该如何实现这种功能:
即:
创建一个应用程序上下文,我可以在其中填充上下文敏感信息,如数据库连接、邮件配置、对象工厂、各种状态信息等。
访问用户对象(我可以添加用户凭据、权限等)
有权访问会话变量等?
注意事项
- 我将在 Linux 上部署 Web 应用程序,并将使用 Apache 作为 Web 服务器。
- 出于本项目的目的,我不想使用任何 Microsoft 技术,如 Azure、Windows 身份验证等(C# 和 ASP.Net 除外)
- 我想使用原始数据库连接,而不是使用实体管理器(旧应用程序端口)
【问题讨论】:
-
您研究过 OWIN 和 ASP 身份吗?如今,身份与 OWIN 一样,随 ASP 应用程序的模板一起提供,它将处理您所有的身份验证需求。 OWIN 是一个更基本的框架,其他所有东西(理论上)都位于该框架上——如果您想构建自己的身份验证框架只是为了学习,我会从 OWIN 开始。 ASP.net 网站上有一些教程。
标签: asp.net asp.net-web-api asp.net-web-api2