我已经使用了asp.net会员一段时间,但这次由于某些要求我们不能使用asp.net会员资格。因此,我必须实现一个简单的登录系统,我们必须验证使用并让他们访问网站部分,另一方面也阻止访问某些文件夹,以便登录用户只能访问这些文件夹的内容。
阻止访问以下文件夹
/英语/
/法语/
/图像/
用户应该只有在登录后才能访问这些文件夹的内容。我在用户成功登录时设置一个简单的会话变量。让我们session["UserLoggedIn"] = true
。
使用asp.net会员资格,我们可以阻止从web.config访问文件夹。但我不知道如何使用自定义登录来实现它。
这方面的任何指针都会有所帮助。
答案 0 :(得分:1)
我不太确定这是否对您有用,但我过去做过类似的事情(请参阅用户Isaac的答案以获得一些指导):Securing a web folder with out membership roles defined
基本上,在登录事件时,您可以为会话分配一个“英语”或“法语”的变量(注意我现在不在VS中,所以我的代码可能大致与您正在寻找的内容):
void protected OnLogin()
{
if(UserIsAuthenticated)
{
Session["English"] = true;
}
}
然后在Global.asax文件中,如果用户经过身份验证,您应该能够引用该变量:
void Application_BeginRequest(object sender, EventArgs e)
{
if(Request.PhysicalPath.Contains("English")
{
if(!((bool)Session["English"]))
//Not "English" user - redirect to login or unauthorized page
}
}
同样,我的代码主要来自我给你的链接,如果这不起作用,我可以在我的一些项目中查看我过去做过的确切内容。
此外,您可以使用Visual Studio 2012并使用ASP.NET Web配置工具并尝试使用您的用户数据库来处理它,我见过人们这样做 - 它有点复杂,因为您必须编写代码位于web.config文件中,但我猜测更可能是安全的。这篇MSDN文章也可能有所帮助:http://www.asp.net/web-api/overview/security/external-authentication-services。