asp.net – 在请求之间检索和持久化状态
我正在编写我的第一个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')) { } } } } 我的问题是,我如何实现这种功能: 即: >创建一个应用程序上下文,我可以在其中填充上下文相关的信息,如数据库连接,邮件配置,对象工厂,杂项状态信息等. 笔记 >我将在Linux上部署Web应用程序,我将使用Apache作为Web服务器. 解决方法
为此,我会说this PDF Poster给出ASP.NET WebAPI中请求处理的最佳图示.
为此,我会说,WebAPI被设计为无状态的,所以最好的方法是创建一个持久会话(在数据库中),并为每个请求使用会话标识符(如会话密钥或令牌),以标识用户和获取他的会话变量/上下文信息. 现在,为了实现您在示例中要求的那种功能,可以通过认证过滤器和授权过滤器(More details on implementing them here)的组合来实现. WebAPI中的每个请求首先由处理程序处理,然后在执行请求的操作之前,应用过滤器.对于您的示例,验证过滤器将保存DoLogin函数,user.hasPermission逻辑将驻留在授权过滤器中,只有操作逻辑将驻留在控制器中的Action(功能)中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 显示在文本框,标签后面的菜单. ASP.NET/C#
- asp.net-mvc – 我可以在Razor视图中访问C#枚举吗?
- asp.net-mvc – [Authorize(Users =“*”)]在asp.net mvc中
- 来份ASP.NET Core尝尝
- asp.net-mvc-2 – ASP.NET MVC2 ModelMetadataProviders:重
- asp.net web api控制器中不允许405个方法选项?
- asp.net – 如何禁用Web.Config中的目录浏览
- asp.net – TZOFFSETFROM和TZOFFSETTO是什么意思
- asp.net-mvc – 错误处理在asp.net mvc 3
- asp.net – Page.IsValid如何工作?
- ASP.NET MVC 3使用子集合进行不显眼的jQuery客户
- Asp.net的表单身份验证
- asp.net-mvc – MVC4 Action返回没有null的JsonR
- asp.net-mvc – 我的bin部署MVC4应用程序中的区域
- query-string – asp .net 2.0上的最大查询字符串
- asp.net-web-api – 在WebApi2项目中使用CacheOu
- asp.net – ScriptResource.axd和.Net 4
- 如何使用ASP.NET C#设置html输入类型文本值?
- asp.net-mvc – 未找到或构造错误的路由
- asp.net-mvc-3 – 将数据从Action传递给另一个Ac