使用asp.net webforms阻止对自定义登录的文件夹的访问

时间:2016-02-08 05:35:01

标签: c# asp.net asp.net-membership

我已经使用了asp.net会员一段时间,但这次由于某些要求我们不能使用asp.net会员资格。因此,我必须实现一个简单的登录系统,我们必须验证使用并让他们访问网站部分,另一方面也阻止访问某些文件夹,以便登录用户只能访问这些文件夹的内容。

阻止访问以下文件夹

/英语/

/法语/

/图​​像/

用户应该只有在登录后才能访问这些文件夹的内容。我在用户成功登录时设置一个简单的会话变量。让我们session["UserLoggedIn"] = true

使用asp.net会员资格,我们可以阻止从web.config访问文件夹。但我不知道如何使用自定义登录来实现它。

这方面的任何指针都会有所帮助。

1 个答案:

答案 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