我最近做了一个管理系统,用ASP.NET做的。我在其中遇到了一个对我而言的难题,就是权限问题。我想让访问者必须登录才能进入相应的界面,在浏览器地址栏中输入界面的地址,则无法访问,登录进入相应权限内界面后,在浏览器地址栏中输入其他界面的地址,也无法访问。
有谁可以帮我一下啊,我非常的需要帮助。

解决方案 »

  1.   

    //必顺从登陆页面进入
    string MustFromUrl="http://localhost/aspnet/WebApplication32/login.aspx".ToLower();

    //若不符合要求则转到登陆页
    if (Request.UrlReferrer.ToString().ToLower()!=MustFromUrl)
    {
    Response.Redirect(MustFromUrl);
    }
      

  2.   

    在登陆时保存个session变量,用来保存用户的登陆状态,以后在每个需验证的页面,判断session变量的值也可实现此功能啊。
      

  3.   

    to nicesky1(无名)可以给出具体的代码例子来吗?我是新手,实际操作不行,谢谢了!
      

  4.   

    有三种方法可以做,
    1. Cookie 2. Session 3. Form身份验证  
    最常用的是第三个Form,可以在这个网址去看看http://spaces.msn.com/members/qnuse/Blog/cns!1p5gvilCHpiu_NDdGITUGiRA!125.entry
    第二种的代码如下:
    在你验证登陆成功后添加Session["flag"]=true;
    然后在你的每个页面里的Page_Load里判断
    if(Convert.ToString(Session["flag"])=="True")
    {
    //里面写自己的代码
    }
    else
    {
    //否则就转到登陆页面去
    Response.Redirect("login.aspx") 
    }
      

  5.   

    "登录进入相应权限内界面后,在浏览器地址栏中输入其他界面的地址,也无法访问",这个问题要解决的好也不容易.比较复杂的方法是,你对主要的页面配置权限,在这些页面的开始处,根据用户登录的ID来判断用户是否有权限.这种方法要求权限设计的要合理,页面很多的情况下,有点麻烦.比较简单的方法是,如你在页面设置上下两个FRAME,当在地址栏输入新地址的时候,相当于你的主页面UNLOAD,所以你在主页面的UNLOAD事件中添加跳转到登出的页面. 也就是说,在地址栏输入新地址,就让用户登出.
      

  6.   

    修改 Web.config
    1、  双击项目中的Web.config(不会的、找不到的打 PP)
    2、  找到下列文字 <authentication mode="Windows" /> 把它改成:
    <authentication mode="Forms">
    <forms loginUrl="Login.aspx" name=".ASPXAUTH"></forms>
    </authentication>
    3、  找到<authorization> <allow users="*" /></authorization>换成 
    <authorization><deny users="?"></deny></authorization>
      

  7.   

    使用ASP.NET的FORM验证就可以防止别人盗链,就像楼上的那样如果想让登录用户也不能在地址栏里输入地址访问,那一定是只有通过按钮或链接才可以访问,那可以使用服务器端控件或标准ASP.NET控件在代码里写页面转向,并在URL里进行加密.
      

  8.   

    防止盗链的问题很容易在load事件写个截获引用页网站时不时等于你的网址
      

  9.   

    你这个不是防盗链问题吧?应该算是浏览权限控制的问题,也就是非授权用户得到URL也无法浏览内容,对吧?最方便的做法就是Forms Authentication,也就是Forms验证,详细的做法你可以看MSDN,里面说得很清楚了。特别是ASP.NET 2.0,用Forms验证真的非常方便。Forms验证的一个好处就是,你无须在每个页面加代码验证用户是否登录,你可以在web.config配置用户浏览某个区域(例如目录)所需要的权限,不够权限的系统自动帮你拦截该用户。