我正在学习在asp.net webform应用程序中实现安全性。我使用简单的形式认证,有一个页面(不是登录),可以通过从URL检查令牌并查看它是否存在于数据库表中来允许匿名访问。 在线研究后,我目前的解决方案是:
的web.config:
一般表格认证
<authentication mode="Forms" >
允许匿名用户访问特定页面
<location path="MyPage.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
的Global.asax:
调用业务对象层中的方法以检查令牌是否有效 在数据库中
protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
bool auth = User.Identity.IsAuthenticated;
if (!auth)
{
string token = Request.QueryString["token"];
var authenticateResult = AuthenticateBO.AuthenticateProductRequest(token);
}
}
我在网上看到一些不建议在应用程序级别调用数据库连接的帖子。我想知道我的情况(需要检查数据库中的令牌),我可以在Global.asax中添加业务层引用吗?或者有更好的解决方案吗?谢谢!
答案 0 :(得分:0)
正如Arghya C所说,看起来您正在使用业务对象来检查您的令牌是否有效。如果此方法访问您的数据库,则由您的业务层决定。
这里要注意的重要一点是你的Global.asax对数据库一无所知,这表明你的实现有很好的分离,如果你没有&#,就不可能知道你正在对数据库进行身份验证。 39; t说。