2012-05-18 28 views
0

需要解决自定义授权问题。 我已经在我的数据库四个表命名为: 1. Usermaster 2.Roles 3.RoleMenu 4.Menuasp.net中的自定义授权和页面保护

我已经实现了这一点,它的工作完美。 我现在唯一的问题是,经过身份验证的用户只需在浏览器中输入页面url即可查看未经授权的页面。

除了窗体身份验证和文件夹级访问之外,还有其他有用的想法吗?

+0

表单身份验证有什么问题?它经过了很好的测试,并且很稳定,并被许多网站使用,包括这一个。 –

+0

我与表单身份验证的主要问题是性能和定制。关于如何在这种情况下应用它的任何想法? – froodo

+0

你觉得表单身份验证性能不佳且不可定制? –

回答

0

我有一个类似的项目,我似乎无法在别处找到的代码,因为它是很长一段时间以前。我记得前提。我所做的是我在webconfig中设置了一个密钥,该密钥的用户名允许以pipedelimited字符串访问。在代码的后面,我将拉入该密钥以及尝试访问该页面的用户。然后我会搜索字符串并尝试匹配用户。如果找到了匹配的页面,则会加载该页面,如果找不到匹配项,则会将它们重定向到一个页面,告诉他们他们没有访问权限以及联系谁来请求访问权限。我会寻找代码并编辑,如果我找到它。

编辑

WebConfig

<appSettings> 
    <add key="Users" value="user1|user2|user3|..." /> 
</appSettings> 

这片云的

上面对于.aspx.vb页面

Dim DomainUserName() As String = Request.ServerVariables("LOGON_USER").Split("\") 
    Dim UserName As String = DomainUserName(1) 

    Dim Users() As String = ConfigurationManager.AppSettings("Users").ToString.Split("|") 

    Dim isAllowedAccess As Boolean = False 

    For i As Integer = 0 To Users.Count - 1 
     If UserName = Users(i) Then 
      isAllowedAccess = True 
      Exit For 
     End If 
    Next 

    If isAllowedAccess = False Then 
     Response.Redirect("Default.aspx") 
    End If 

本质上我们登录是域\用户名所以我正在做的是使用拆分提取名称。然后,我将接受的用户填充到管道中的一个数组中,并通过它们循环搜索匹配项。当找到匹配时,允许他们访问,如果找不到匹配,他们将被重定向回主页。

+0

现在检查表单身份验证是一种可行的选择。 – froodo