none
怎样像使用函数一样使用Server.Execute或是Server.Transfer? RRS feed

  • 问题

  •         我记得老师在讲课时提过: 在访问一个页面时怎样判断用户是否有权访问此页面(用户是否登陆)。其中一种方法就是 统一在一个页面如:isLogined.aspx页面上判断。
            然后,在需要判断的页面使用Server.Execute或是Server.Transfer(我有点记不清使用哪个了!)具体方法老师没讲。

             我今天用时才发现:怎么接收返回值呀?例如我想写:
    if(Server.Execute("isLogined.aspx"))
    {
        //登陆状态
    }

    isLogined.aspx页面我怎么写这个方法呢?(具体的我会如判断Session等)就是不会 return 一个bool值, 这个bool值怎么传给Server.Execute("isLogined.aspx")呀?
        public bool isLogined()
        {
            bool flag = false;
                 ......
             return flag;   
        }

                       ???????????????







    www.haodd123.com
    2009年2月9日 21:29

答案

全部回复

  •   我英文不好,看不懂
    www.haodd123.com
    2009年2月9日 23:12
  • 很少见验证采用Server.Execute或是Server.Transfer的


    如何:实现简单的 Forms 身份验证
    http://msdn.microsoft.com/zh-cn/library/xdt4thhy.aspx



    身份验证介绍
    http://msdn.microsoft.com/zh-cn/library/7t6b43z4.aspx
    http://msdn.microsoft.com/zh-cn/library/91f66yxt.aspx
    ASP.NET 2.0 中的窗体身份验证的方法
    http://msdn.microsoft.com/zh-cn/library/aa480476.aspx

    使用Page.User.Identity.Name得到登录用户的登录名
    Page.User.Identity.IsAuthenticated进行判断是否通过了验证
    Page.User.IsInRole方法得到当前用户的角色




    孟宪会
    • 已标记为答案 lkf18 2009年2月10日 5:06
    2009年2月10日 0:43
    版主
  • execute 表示吧运行结果输出到当前流
    transfer 是通知客户端  你要的我没给你 我给你另一个叶面

    两个都不具备基本的函数运行条件  请不要想那么用
    Guitar Hero IV -- Singing Rock & Roll.
    2009年2月10日 1:46
  •    哈哈 我在看孟老师的回帖之前自己想了个方法,不过又产生一小点疑问在这儿,顺便问问:代码如下
    我在App_Code\isLogined.cs中写了个静态方法:

        public static bool isSuccess()
        {
            bool flag = false;

            if (System.Web.HttpContext.Current.Session["name"] != null && System.Web.HttpContext.Current.Session["pwd"] != null)
            {
                string userName = System.Web.HttpContext.Current.Session["name"].ToString();
                string userPwd = System.Web.HttpContext.Current.Session["pwd"].ToString();
                string strSql = "SELECT COUNT(*) FROM [admin] WHERE [userName]=@userName AND [userPwd]=@userPwd";
                OleDbParameter[] prams = { new OleDbParameter("@userName", OleDbType.VarChar),
                                       new OleDbParameter("@userPwd",OleDbType.VarChar) };
                prams[0].Value = userName;
                prams[1].Value = userPwd;
                if (Convert.ToInt32(access.getExecuteScalar(strSql, prams,con)) > 0)
                {//验证通过
                     flag = true;
                }
                else
                {
                    System.Web.HttpContext.Current.Response.Redirect("Default.aspx?w=x");
                    System.Web.HttpContext.Current.Response.End();
                }
            }
            return flag;
        }

    在需要判断的地方调用,我想问的是:
                    System.Web.HttpContext.Current.Response.Redirect("Default.aspx?w=x");
                    System.Web.HttpContext.Current.Response.End();

    它是先转向了吧?还会执行到 Response.End();语句么???












    www.haodd123.com
    2009年2月10日 4:46
  • 使用

    Server.Execute或是Server.Transfer

    是不安全的
    System.Web.HttpContext.Current.Response.Redirect("Default.aspx?w=x");
    不执行
    System.Web.HttpContext.Current.Response.End();

    如果要执行
    System.Web.HttpContext.Current.Response.End();
    需要写

    System.Web.HttpContext.Current.Response.Redirect("Default.aspx?w=x",false);

    孟宪会
    • 已标记为答案 lkf18 2009年2月10日 5:05
    • 取消答案标记 lkf18 2009年2月12日 16:56
    2009年2月10日 4:58
    版主
  •   Page.User.IsInRole()  会员身分又是在哪定义的呢?比如我要写:
                if (Page.User.IsInRole("管理员"))
                {
                    Response.Write("你是管理员");
                }

    那“管理员”是在哪里定义的呢?

    www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
    2009年2月12日 14:51
  • 不要在同一个帖子里面提出多个问题。如果一个回答被标记为答案,整个问题都被标记为已解决。如果你想解决你的每个问题,那么为你的每个独立的问题开一个帖子。

    MSMVP VC++
    2009年2月12日 16:47
    版主