如何根据用户的登录权限来显示不同的web.sitemap假设用户现在分两种,一种是管理员,登录后可以看到web.sitemap所有的节点。另外一种是普通用户,登录后有一些web.sitemap的节点无法看见,请问如何实现?

解决方案 »

  1.   

    根据session取得用户名
    查表得到权限
    然后判断、加载。
      

  2.   

    这个权限不复杂,楼上的方法也可以
    如果仅考虑这个的话web.sitemap,那就在登录的时候判断一下该跳到哪个页面就可以了
      

  3.   


    是否在模板页的
        protected void Page_Load(object sender, EventArgs e)方法中判断加载?
    可是如何根据用户的权限来加载
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
      <siteMapNode title="操作界面"  description="登陆界面管理">
        <siteMapNode url="~/mesSearch.aspx" title="信息查询"  description="管理用户信息" />
        <siteMapNode url="~/useradd.aspx" title="用户信息添加"  description="添加用户信息信息" />
      </siteMapNode>
    </siteMap>
    加入一般用户不会看见“用户信息添加”这个标签,该如何做?
      

  4.   

    可以使用一个XML文档配置显示文件
    然后使用forms表单认证
    基本上网站的权限问题都是这样解决的
      

  5.   

    根据角色,模块实现权限管理,绑定到treeview

      XmlDataSource GetDataSource(string UserRole)
        {
            XmlDataSource xds= new XmlDataSource();
            xds.XPath = "siteMap/siteMapNode";
            switch (UserRole)
            {
                case "Administrator":
                    xds.DataFile = "";
                    break;
                case "User":
                    xds.DataFile = "";
                    break;
                default:
                    xds.DataFile = "";
                    break;
            }
            xds.DataBind();
            return xds;
        }
      

  6.   

    另外还有问题想问下大家:
    我在web.config中设置了
        <authentication mode="Forms">
          <forms loginUrl="Default.aspx" name=".ASPXAUTH">
            </forms>
          </authentication>
        <authorization>      <deny users="?"></deny>    </authorization>
    本意是想让没有登录的用户无法越过登录界面去访问其他的界面。但是我发现系统登录界面的背景图片丢失了,并且即使在登录界面输入登录信息之后也无法进入到主界面。请问是怎么回事?
      

  7.   


    这个方法不挺合适?跳转。。验证成功后。设置跳转到框架页了没 response.redirect
    ('default.aspx') 路径要正确
      

  8.   

    因为Forms验证默认的路径是你应用程序下的所有文件,所以在没有登录之前,是获取不到图片的。必须设置你的图片的路径允许匿名用户访问。<location path="image">//path为你存放图片的路径
        <system.web>
          <authorization>
            <allow users="?"></allow>
          </authorization>
        </system.web>
     </location>
      

  9.   


    那么请问hnsdwhl,如何实现没有登录的用户不得去浏览其他的页面?谢谢
      

  10.   


    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization="true">
        <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="Logon.aspx" title="首頁"  description="">
          <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" title="公司管理"  description="" >
            <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="Bulletin.aspx" title="查看布告" description=""/>
            <siteMapNode roles="經理,經理助理" url="BulletinAdd.aspx" title="添加布告"  description="" />
            <siteMapNode roles="經理,經理助理" url="BulletinEdit.aspx" title="修改刪除" description=""/>
          </siteMapNode>
          <siteMapNode roles="經理,經理助理,副理,襄理,課長" title="員工管理" description="">
            <siteMapNode roles="經理,經理助理,副理,襄理,課長" url="JobSearch.aspx" title="查看工作" />
            <siteMapNode roles="經理,副理,襄理,課長" url="ReportSearch2.aspx" title="員工總結" description=""/>
            <siteMapNode roles="經理,經理助理" url="PersonnelManage.aspx" title="人員管理" />
          </siteMapNode>
          <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" title="客戶部分" description="">
            <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="VendorManage.aspx" title="客戶管理" />
            <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="VendorAdd.aspx" title="添加客戶" />
          </siteMapNode>
          <siteMapNode roles="經理,助理工程師,副理,襄理,課長,資深工程師,工程師" title="RMA" description="">
            <siteMapNode roles="經理,助理工程師,副理,襄理,課長,資深工程師,工程師" url="NewSimulation.aspx" title="Simulation Request" />
          </siteMapNode>
          <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" title="個人信息" description="">
            <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="JobAdd.aspx" title="工作日志" description=""/>
            <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="PasswordChange.aspx" title="密碼修改" description=""/>
          </siteMapNode>
          <!--<siteMapNode roles="經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" title="個人總結">
            <siteMapNode roles="經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="ReportSearch.aspx" title="員工總結" description=""/>
            <siteMapNode roles="經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="ReportAdd.aspx" title="添加總結" description=""/>
            <siteMapNode roles="經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="ReportUpdate.aspx" title="修改總結" description=""/>
            <siteMapNode roles="經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="ReportState.aspx" title="提交總結" description=""/>
          </siteMapNode>-->
          <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" title="公司信息">
            <siteMapNode roles="經理,經理助理,副理,襄理,課長,資深工程師,工程師,助理工程師" url="PersonnelSearch.aspx" title="職員名單" description=""/>
          </siteMapNode>
        </siteMapNode>
    </siteMap>
    我用的membersihp+web.sitemap做的,如何區別角色在sitemap中的配置如上。
      

  11.   


    <authentication mode="Forms">
      <forms loginUrl="Default.aspx" name=".ASPXAUTH">
      </forms>
      </authentication>
      <authorization>
        <deny users="?"></deny>
    </authorization>把这段代码加上就可以了啊,这里是禁止匿名用户访问其他的页面,而前面location的设置是为了允许匿名用户访问image目录下的图片,这样才可以使得你的图片在登录页面得以显示出来。
      

  12.   

    另外设置Forms验证,在通过用户名和密码的认证后,还需要对用户授权,才能够跳转到你想要的页面去。FormsAuthentication.SetAuthCookie(txtUserName.Text,false);