我正在编写我的第一个ASP.NET Web API应用程序。我熟悉其他Web应用程序框架(主要是Symfony,但也包括Django,在较小程度上RoR)。跨请求检索并保持状态
为了理解从浏览器/前端客户端向Web服务器发送请求之后发生的事件顺序,我正在苦苦挣扎。
我在写一个多租户应用程序,它使用了一个DB后端。我使用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'))
{
}
}
}
}
我的问题是,我该如何实现这样的功能:
即:
创建应用程序的背景下,我可以像一个上下文敏感的信息填充数据库连接,邮件程序配置,对象工厂,其他状态信息等。
访问用户对象d用户凭证,权限等)
有权访问会话变量等?
注意
- 我将在Linux上部署Web应用程序,我将使用Apache作为Web服务器。
- 为了这个项目的目的,我不想使用Azure,Windows Authentications等任何微软技术(除了C#和ASP.Net)
- 我想使用原始数据库连接,而不是使用实体经理(遗留应用程序接口)
你看过OWIN和ASP身份吗?目前,Identity与ASP应用程序的模板一样,同OWIN一样,它将处理您所有的身份验证需求。 OWIN是其他所有(理论上)所在的更基本的框架 - 如果您希望构建自己的认证框架以供学习,那么我将从OWIN开始。在ASP.net网站上有一些教程。 –