我有一个 Web 项目,其中有一个处理一些数据操作的业务层。我想通过检查是否存在活动的未结束有效来保护某些或所有方法Session
在执行该方法之前。
我首先想到使用Attribute
上课了,但我无法正确运行它。由于该类是一个普通类并且不是派生自System.Web.Page
。当调用所需的 BL 实例时,属性类永远不会运行。此外,某些方法可能不需要有效的会话,因此整个类可能不需要完整的安全性。而且,在方法的每个开头添加一行来检查会话听起来不太有希望。
如果你问我为什么需要通过方法来保护,我可以这样解释:
- 这是一个网络项目
- 人们可能会从填充开始,但在那一刻从未保存过
- 假设该屏幕等待大约 30 分钟
- 会议已经结束
- 用户回到计算机前,然后单击SAVE按钮,但过程不应完成
保存操作可以很容易地成为DELETE
操作或SELECT
.
由于表格和内容有很多类型,我有BL.ItemManager
, BL.VideoManager
, BL.ServiceManager
等等...所以,这些类中有很多保存、删除和选择方法。
因此,有没有一种巧妙的方法通过在运行进程之前检查会话来保护某些方法
您可以使用面向方面的方法;后锐利 http://www.sharpcrafters.com/可能是一个选择。
您所需要做的就是使用 PostSharp 创建一个属性,在方法调用之前注入代码以检查会话是否处于活动状态。就像是;
[SessionAlive]
public void SomeMethod()
或者你可以使用Session_End
Global.asax 文件中的方法,或者您可以使用一些 javascript 代码来强制重定向到登录页面 https://stackoverflow.com/questions/391784/asp-net-session-expiry-redirect-to-login-page.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)