form身份验证和用session判断验证有什么区别??
怎么设置页面的访问权限?就是说有很多页面只能登录的用户进行查看,不能直接在地址栏输入来访问,那是不是要在每个页面的page-load事件中判断session??

解决方案 »

  1.   

    form身份验证,我很汗颜没用过。怎么设置页面的访问权限?
    用户登录时就将权限串存入session中,在相关页面判断即可。每个页面的page-load事件中判断session??
    不需每个页面的pageload里判断,写一个类,在需要的页面里基层该类。using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Web.UI;/// <summary>
    ///pageSession 的摘要说明
    /// </summary>
    namespace Com.PubClass {
        public abstract class pageSession : Page {
            private bool _isadmin;
            protected bool IsAdmin {
                get {
                    return _isadmin;
                }
                set {
                    _isadmin = value;
                }
            }        protected override void OnLoad(EventArgs e) {
                try {
                    if (Session["UserLoginID"] != null) {
                        this.IsAdmin = true;
                    } else {
                        Session.Abandon();
                        Response.Write("<script>alert('用户登录超时,请重新登录!');top.location.href='" + ResolveUrl("~/login.aspx") + "';</script>");
                        Response.End();
                    }
                } catch (Exception serviceErr) {
                    Response.Write("会话已过期!<br/><b>详细信息:</b>" + serviceErr.Message.ToString());
                    Response.End();
                }
                base.OnLoad(e);
            }
        }
    }在需要session验证的页面里继承该类:
    public partial class Aspx_Manage_Index: pageSession
    {
       protected void Page_Load(object sender, EventArgs e)
       {
        
       }
    }
      

  2.   

    不能直接在地址栏输入来访问
    ==========
    page_load中清空页面缓存即可 Response.Buffer = true;
                    Response.ExpiresAbsolute = System.DateTime.Now.AddHours(-2);
                
                    Response.CacheControl = "no-cache";
                    Response.AddHeader("pragma", "no=cache");
      

  3.   

    设置basepage判断session
    forms验证就是利用Cookie或者Session来控制用户对页面的访问
      

  4.   

    forms验证很便捷、实现退出功能只需2句代码
    1、在根目录下修改配置文件<authentication mode="Forms">
         <forms name="xiaocookies" loginUrl="~/admin/login.aspx"/>
    </authentication>2、admin目录下创建一个web.config
    <system.web>
            <authorization>
                <deny users="?"/><!--表示拒绝未通过验证的用户访问当前目录-->
               <!--如果用户访问admin目录下的页面,,此时将会转到admin/login.aspx,上面定义了loginUrl-->
            </authorization>
        </system.web>
    3、怎么让用户通过验证呢?
    在admin/login.aspx登录事件中写入下面的代码: protected void SetDom(string userId)//省略了用户查询和验证
     {
      FormsAuthentication.SetAuthCookie(userId,true);//给userId用户发放权限
      Response.Redirect("menu.htm");//转到admin/menu.htm页面
     }
      

  5.   

    4、退出代码://我这里用的是.ashx文件
    public void ProcessRequest (HttpContext context) {
    System.Web.Security.FormsAuthentication.SignOut();
    //context.Session.RemoveAll();
     context.Response.Redirect("login.aspx");
    }
      

  6.   

    很简单的
    if (Session["UserLoginID"] != null) {
                       // 提示没有登录            
       } else {
                        
    //登录了
                    }
      

  7.   

    在Web.Config里面做一个配置,用户不登录,就直接跳转到登录界面,只有登录通过,才能够看到别的页面。