使用asp net 2.0的成员管理和角色管理类实现对网站的用户和访问权限进行管理。
在web.config配置文件中配置了<forms loginUrl="/Login.aspx" name=".ASPXFORMSAUTH">,并对不同的用户配置了不同的角色。如用户user1属于角色admin,允许访问所有的文件;用户user2属于角色sales,只允许访问<Sale>文件夹下的文件。
现在问题是:当user2在登录情况下,访问非<Sale>目录下的页面时,就会自动跳转到/Login.aspx页面。要求进行登录。如何实现在user2已登录的情况下访问权限以外的页面时,系统就自动跳出弹出对话框提醒“你无权访问当前页面”,之后返回到前面刚访问的页面!

解决方案 »

  1.   

    在跳转之前再判断一下user2的角色。
      

  2.   

    你这样做是不行的呀
    如果你对一些页要特定的人员来访问,你可以用session来判断
    session为某一个值的时候可以访问,否则不能
      

  3.   

    是必然转到login页的,你最好就在login页检测一下是否已登陆,如果是就提醒用户这个登录提示是因为他全县不足而出现的。
      

  4.   

    cat_hsfz(我的新Blog在http://cathsfz.cnblogs.com) 
    是的,最后我也是这样处理的,
    1、对于未登录用户访问需要权限的页面时直接转到LOGIN页面进行登录;
    2、对于已登录用户而访问权限无权访问当前页面时,让它在LOGIN页面的Page_Load中检测是否登录,如确认是已登录用户的话,就转到一个特定的出错页面,
      

  5.   

    楼上的朋友说得比较正确。但是有一点,如果登录用户已经成功登录,但是又手动转到登录页,如登录页是login.aspx。那这个时候如果转到出错页面,显然不太合理。
    所以,我觉得应该是先加上一下判断。如login.aspx.vb中Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If User.Identity.IsAuthenticated Then '如果用户已经授权
                Dim pathurl As String = Request.QueryString("ReturnUrl")
                If (Not pathurl Is Nothing) AndAlso (pathurl.Length > 0) Then
                    Page.ClientScript.RegisterStartupScript(GetType(String), "msg", "<script>alert('无权访问')</script>")
    '或是转到出错页面.
                End If
            End If    End Sub还有一个想法是.楼主是如何考虑用户访问一个不属于该用户可以访问的页面呢?
    如果说,在该用户登录后,就根据用户的角色来显示不同的导航菜单,这样算是解决此问题的权宜之法.当然如果此用户知道admin目录下的页面文件名时,他还是可以直接访问的.当然还有一个办法,就是比较烦锁,在每个.aspx文件中的pageload事件中,将当前访问页面的url保存到一个session中,然后在login.aspx.vb中,去判断该session是否为空,不为空时,先报"该页面不允许访问",再转到session中的地址上去.