a页面,普通用户登陆后可以访问,b页面,要求是管理员身份才能够访问,如果一普通用户登陆到了a页面,
现在他想直接进入b页面,那么系统是自动把他导航到login.aspx页面,是不是可以在导航到login.aspx页面之前先弹出个信息窗口啊,可以实现么?如何实现?

解决方案 »

  1.   

    javascript<script language=JavaScript>alert('xxxxxxxxxx');</script>
      

  2.   

    晕死
    怎么能够这样啊
    可能没有看清楚我的题目还是我没有说清楚啊?
    这个用的全部是forms角色验证的
    ....
    我也说不清楚了
    a.aspx:普通用户角色页面
    b.aspx:管理员角色页面
    一普通用户登陆到a.aspx,而a.aspx里面有个连接进入b.aspx,如果此用户点了这个连接想进入b.aspx,
    但是因为这个用户不是管理员角色,所以系统就会把他导向到login.aspx
    我希望的在导向到login.aspx的前面弹出个信息框啊,说明他所在的用户组没有这个权限啊
      

  3.   

    那就在b页面中验证一下身份啊
    if(Loginer=="Manage")
    {
        Login In
    }
    else
    {
       Login Out
    }
      

  4.   

    我在b页面的page-load中
    if(!IsPostBack)
    {
    if(!HttpContext.Current.User.IsInRole("Administrator"))
    {
        Response.Write("<script>alert('你没有权限');</script>");
    }
    }
    也是一样的
    没有任何提示就被定向到login.aspx
      

  5.   

    是你的想法不对嘛。另外不要依靠别人,要靠自己。
    为什么我的想法不对呢》?我看现在好多网站都用forms角色验证啊,大型的都是啊还有在一个普通用户登陆他不具备权限的网页时提示一下为什么想法不对呢?
      

  6.   

    a页面的代码:
    <script language="javascript">
        function show()
    {
       if(confirm("你确定要去么?"))
       {
           window.open("../admins/default.aspx","_self");
       }
    }
    </script>
      </head>
      <body MS_POSITIONING="GridLayout">

        <form id="Form1" method="post" runat="server">
    user页<a href="#" onclick="show();">管理</a>
         </form>

      </body>
    </html>b页面的代码:
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!IsPostBack)
    {
    if(!HttpContext.Current.User.IsInRole("Administrator"))
    {
        Response.Write("<script>alert('你没有权限');</script>");
        Response.Redirect("../login.aspx");
    }
    }

    }在b设置断点,发觉他不执行b里面的任何代码
      

  7.   

    if(empty($_SESSION['privileges']))
    {
        outJs("您没有登录,没有权限访问该页");
        header("location:login.php");}
    elseif($_SESSION['privileges'] < $privileges)
    {
         outJs("用户权限不够,请和管理员联系,提高您的权限");
        header("location:index.php");}
    else
    {
    }
      

  8.   

    谢谢各位的up,我现在把解决方法写出来
    刚刚就这个问题和快乐,tp,jyk,yiyanxiyin,那个头。等朋友在群里讨论,他们提出这样解决,在web.config里面把loginUrl设置成一个中间页面c.htm,里面就只有弹出信息窗口的脚本和导向到login.aspx的脚本,这个方法很好,但是我想有点麻烦而且不个性化,因为这样无论用户是不是登陆了都会这样,不好,吃饭的时候我想了下,得到另外种解决办法,如下:
    首先修改web.config:
    <location path="admins">
    <system.web>
    <authorization>
    <!-- Order and case are important below -->

    <deny users="?"/>
    </authorization>
    </system.web>
    </location>
    他的意思是在admins下面的文件拒绝匿名用户访问,也就是说你只要是个登陆了的用户都可以访问,不管你是什么角色都可以,这样的话我们就可以在b.aspx的page-load里面来判断角色进行操作了
    为什么以前不能够这样呢?因为我以前的web.config代码这样:
    <location path="admins">
    <system.web>
    <authorization>
    <!-- Order and case are important below -->
    <allow roles="Administrator"/>
    <deny users="*"/>
    </authorization>
    </system.web>
    </location>
    他的意思是只有Administrator角色才能够访问admins目录下的文件,于是其他的用户角色一访问这里的页面他首先根本就不会执行b页面里的page_load事件而是直接跑大login.aspx里面去拉
    下面再写b.aspx里面的代码如下:
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!IsPostBack)
    {
    if(!HttpContext.Current.User.IsInRole("Administrator"))
    {
        Response.Write("<script>alert('美女,你没有这个权限啊!');history.back();</script>");
    Response.End();

                       
    }
    }呵呵,这样的话在b里面判断他的角色身份再确定做什么事,这样就很方便而且很个性化拉!

    }