准备把以前的老系统改成 Forms验证模式 ,现在有个问题,始终想不明白 ,忘高手指点。我查过很多资料基本了解基于角色的Forms验证的实现方法, 但是在我的系统中涉及到页面信息权限 和 页面定位两个问题,一、比如说有一个页面 aaa.aspx 这个页面中有一部分信息是需要认证以后才能查看的二、我的系统有三个登陆入口分别是(企业、个人、管理员)如何根据他访问的页面来判断他应该跳转到哪个登陆入口呢 ?谢谢

解决方案 »

  1.   

    在登录时进行三种角色判断,分别跳转在需要权限进入的页面判断Session值,看是否有权访问
      

  2.   

    在页面跳转后的页面判断session值。根据session的权限进行跳转
      

  3.   

    Forms验证模式,,当然不好,,,你能随心所欲的用Forms写出一些验证权限问
    但自己做的session验证就可以啦
      

  4.   

    给三个角色分别赋个ID 根据ID 判断呗。。
      

  5.   

    ??不好意思 有点不明白 以前一直用session控制的 ,,,,,,,
      

  6.   

    如果要根据他访问的页面来判断他应该跳转到哪个登陆入口,我觉得这和验证一点关系都没有,完全可以自己用代码实现,因为不必知道当前用户的身份,只凭当前的页面路径的话。可以在web config或者自己建立一个配置文件或者在数据库建立一个表,存储角色和对应的能访问的页面的关系。验证身份时候就根据当前路径读取用户角色,从而实现转向不同的登录入口。
    不过要是某个页面要是几种角色都允许访问的话,不知道楼主又是如何区分的?
    登录有必要做几个不同角色的登录页面这么繁琐吗,为什么不集中一个页面处理,要是只有一个登录页面,上述问题也就不存在了。
      

  7.   

    写一个类(BasePage)继承自Page
    重写IsPostBack方法,然后所有的aspx全都改为继承自这个类(BasePage)
    public class BasePage : Page
    {
         protected bool IsPagePostBack(Page page)
        {
            if (!page.IsPostBack)
            {
                HttpContext context = HttpContext.Current;
                HttpCookie cookieUserInfo = context.Request.Cookies["UserInfo"];
                //验证Cookies中是否有该用户的(是否已登陆)
                if (cookieUserInfo == null)
                    //转到登陆页面
                    RequestLogin();
                else
                {
                    ViewState["UserID"] = cookieUserInfo.Value;
                    //用来根据该Cookies内容来判断该用户的权限和角色来选择该跳转的页面
                    SetButtonAuthority(cookieUserInfo.Value, page);
                }
                return false;
            }
            return true;
        }
    }然后再写一个Main页面,做为系统的主页面,在Main关闭的时候清空Cookies
    同时关闭从这个窗口打开的其他所有页面,这是最困难切复杂的一步,Main页面需要用js数组变量来记录住所有从该窗口打开的子窗口
    而且这打开的子窗口还要用数组来记录住他自己的子窗口这样在关闭Main的时候就可以操作关闭他自己的所有自窗口,而这些子窗口的子窗口如果没有关闭的话他自己也不会关闭
    于是需要先关闭子窗口的子窗口
    然后关闭子窗口,最后关闭自己.......貌似这个方法很蠢,但我当时的确是没想到其他方法,因为这个不是CS的吧,窗口处理太麻烦了.
      

  8.   

    角色判断
     protected void Page_Load(object sender, EventArgs e)
        {
            string uu = "";
            if (Request.Cookies["sipUserLoginCookie"].Values["userSerial"] != null)
            {
                string serial = Request.Cookies["sipUserLoginCookie"].Values["userSerial"].Trim();
                if (AuthorityCheck.CheckAuthority(serial))
                {
                    EamUser user = AuthorityCheck.GetUserRole(serial);
                    uploadListGV.DataSource = profile(user);
                    uploadListGV.DataBind();
                }
                else
                {
                    Response.Redirect("Authority.htm");
                }
            }
            else {
                Response.Redirect("ServiceLogin.aspx");
            }
        }