asp.net-mvc – 认证之前调用的ASP.NET MVC控制器构造函数
|
我有一个ASP.NET MVC应用程序与控制器看起来像这样: [Authorize]
public class MyController : Controller
{
IMyRepository myRepository;
public MyController(IMyRepository myRepository)
{
this.myRepository = myRepository;
}
...
}
我已经注意到这个构造函数在进行身份验证之前被调用了,所以如果你在第一次访问该页面之前调用构造函数,然后再将你重定向到登录屏幕.这有很多问题,登录页面加载速度较慢,网站有更大的暴露于DOS攻击,我对未经身份验证的用户有一点紧张,未经授权的用户能够调用“墙后面”的代码. 我可以检查构造函数中的进入请求,除非用户被授权,否则我使用IOC(Windsor),这样做有点棘手,我的存储库将被初始化,无论我是否存储实例,所以我将在每个仓库的构造函数中检查身份验证.在调用构造函数之前,有没有简单的方法让.NET MVC验证用户?我正在考虑将[PrincipalPermission(SecurityAction.Demand,Authenticated = true)]添加到控制器,但可能还有一个更好的方法. 编辑: 好的,不太高兴,但现在必须继续.我无法延迟初始化存储库,直到控制器内的某个稍后的时间点.当控制器在我的例子中使用IOC时,在实例化控制器时,您将获得已经实例化的存储库接口的实现.如果我控制了创建的存储库,我可以很容易地调用IsAuthenticated,不需要一个新的方法.为了控制存储库初始化,您必须在每个实现中在存储库本身中实现某种延迟/延迟初始化.我不喜欢这个解决方案,因为它增加了不必要的复杂性,更重要的是控制器和存储库之间的耦合.存储库实现可以用于其他延迟初始化对IMHO无意义的上下文中. 解决方法控制器需要在授权发生之前进行实例化,因为它可以通过OnAuthorization方法作为自己的授权过滤器.改变这种行为将涉及替换mvc管道的一些核心部分.你认为AuthorizedAttribute可能不会做的工作有什么特别的原因吗?(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-5 – 在GenerateUserIdentityAsync方法的aspne
- asp.net-web-api – 在LINQPad中使用WebAPI?
- asp.net-mvc-3 – 通过URL导致控制器的DateTime导致ASP .NE
- asp.net-mvc – 在asp.net mvc中的redirecttoaction中设置查
- ASP.NET MVC ViewModel模式
- asp.net-mvc-5 – Sharepoint 2013 MVC 5提供商托管的应用程
- asp.net – 如何获得Url.Action使用正确的端口号?
- ASP.NET OpenWebConfiguration失败
- 如何在ASP.NET gridview的标题中放置一个按钮?
- 设置ASP.NET(Visual Studio)服务器配置的默认页面
- asp.net-mvc – 如何为MVC创建自定义验证属性
- 如何禁用Button asp.net
- asp.net-core-mvc – 在Mvc6中,WriteAsync函数在
- asp.net – ASMX服务在开发服务器上工作,部署到I
- ASP.NET MVC在javascript中使用ViewData
- 使用ASP.NET MVC3中的jQuery,可点击日期的事件日
- asp.net-ajax – 建议使用不引人注意的AJAX与MVC
- 在ASP.NET网站中使用单例连接是一个好主意
- asp.net-mvc – 在.NET 3.5 ASP.NET MVC应用程序
- 使用SharpZipLib压缩打包多个内存中的文件
