CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

form验证问题请教

楼主gengxin_914(星星)2005-07-20 12:08:57 在 .NET技术 / ASP.NET 提问

项目下面有3个页面:  
  login.aspx         //登陆页面  
  index.aspx         //首页  
  detail.aspx       //其他页面  
  我在web.config中设置:  
  <authentication   mode="Forms">  
              <forms   name="CntoAuth"   loginUrl="Login.aspx"   protection="None"   path="/"/>  
          </authentication>  
  我是想用户只有登陆之后才能访问   detail.aspx   页面。该怎么做啊 问题点数:50、回复次数:12Top

1 楼tigerwen01(小虎)回复于 2005-07-20 12:17:46 得分 20

Web.config  
    <configuration>  
    <system.web>  
    <compilation   debug="true"/>  
    <authentication   mode="Forms">  
    <forms   loginUrl="login.aspx"   name   =   ".ASPXFORMSAUTH"   />  
    </authentication>  
    <authorization>  
    <deny   users="?"/>  
    </authorization>  
    </system.web>  
    </configuration>  
    default.aspx  
    <HTML>  
    <HEAD>  
    <TITLE>首页</TITLE>  
    <script   language="VB"   runat="server">  
    Sub   Page_Load(Sender   As   Object,   e   As   EventArgs)  
    Message.Text   =   String.Format("你好,{0}",   Context.User.Identity.Name)  
    End   Sub  
    sub   btnSignout_Click(Sender   as   Object,   E   as   EventArgs)  
    FormsAuthentication.SignOut()  
    Response.Redirect("login.aspx")  
    end   sub  
   
    </script>  
    </HEAD>  
    <BODY>  
    <asp:label   id="Message"   runat="server"/>  
    <br>  
    <form   method="post"   runat="server">  
    <asp:button   id="btnSignout"   Text="退出登录"   runat="server"   OnClick="btnSignout_Click"/>  
    </form>  
    </BODY>  
    </HTML>  
   
    login.aspx  
    <HEAD>  
    <TITLE>首页</TITLE>  
    <script   lanugage="c#"   runat="server">  
    private   void   Page_Load(object   sender,   EventArgs   e)  
    {  
    if   (Request.IsAuthenticated)  
    Response.Redirect("default.aspx");    
    }  
    void   btnLogin_Click(Object   sender,   EventArgs   e)  
    {  
    if   (txtUsername.Text   !=   null   &&   txtUsername.Text   !=   String.Empty   &&   txtPassword.Text   !=   null   &&   txtPassword.Text   !=   String.Empty)  
    FormsAuthentication.RedirectFromLoginPage(txtUsername.Text,   true);  
    else  
    lblError.Text   =   "错误的用户名/密码";  
    }  
    </script>  
    </HEAD>  
    <BODY>  
    <form   method="post"   runat="server">  
   
    <asp:Label   id="lblUsername"   runat="server"   Text="用户名:"/>  
    &nbsp;&nbsp;&nbsp;  
    <asp:Textbox   id="txtUsername"   runat="server"/>  
    <br>  
    <br>  
    <asp:Label   id="lblPassword"   runat="server"   Text="密 码:"/>  
    &nbsp;&nbsp;&nbsp;  
    <asp:Textbox   id="txtPassword"   runat="server"   TextMode="password"/>  
    <br>  
    <asp:button   id="btnLogin"   runat="server"   Text="登录"   OnClick="btnLogin_Click"   />  
   
    </form>  
    <hr>  
    <br>  
    <asp:Label   id="lblError"   forecolor="red"   runat="server"/>  
    </BODY>  
    </HTML>  
  Top

2 楼ChengKing((.net: http://blog.csdn.net/ChengKing ))回复于 2005-07-20 12:20:13 得分 0

在:   <System.Web>  
                                       
          </System.Web>  
  中加:  
  <authentication   mode="Forms"   >  
              <forms   name=".ASPXUSERDEMO"   loginUrl="login.aspx"   protection="All"    
  timeout="60"   />  
          </authentication>    
  Top

3 楼Truly()回复于 2005-07-20 12:42:34 得分 0

<authorization>  
                  <deny   users="?"   />  
  </authorization>Top

4 楼gengxin_914(星星)回复于 2005-07-22 10:33:06 得分 0

可能是我没有表达清楚,我想  
  login.aspx         //登陆页面  
  index.aspx         //首页  
  这2个页面可以不需要登陆就之间访问。  
  而detail.aspx       //其他页面  
  这个页面只有通过验证才能访问。  
  这3个页面都在同一文件夹下面。这个该怎么实现啊?  
  Top

5 楼huis(暂住制度在中国害苦人啊)回复于 2005-07-22 11:05:11 得分 0

不懂,学习Top

6 楼Truly()回复于 2005-07-22 12:52:55 得分 20

<location   path="index.aspx">  
          <system.web>  
                  <authorization>  
                          <allow   users="*"   />  
                  </authorization>  
          </system.web>  
  </location>Top

7 楼kgdiwss(∮明天去要饭)回复于 2005-07-22 13:10:28 得分 0

http://blog.csdn.net/kgdiwss/archive/2005/02/24/299652.aspx  
  也许对你有用。Top

8 楼jimu8130(火箭的未来在哪里?)回复于 2005-07-22 13:30:51 得分 0

学习ingTop

9 楼yb2008(中科商务网--ZKE360.COM)回复于 2005-07-22 14:22:16 得分 10

Asp.Net基于forms的验证机制,记录一下...  
  最近在看asp.net   forum,对其中的验证机制看得模模糊糊,看完构建安全的   ASP.NET   应用程序中的表单身份验证部分,思路就很清晰了,稍做了点记录,以便查阅:    
   
  构建基于forms的验证机制过程如下:    
  1,设置IIS为可匿名访问和asp.net   web.config中设置为form验证    
  2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用)    
  3,使用FormsAuthenticationTicket创建一个Cookie并回发到客户端,并存储    
      角色到票中,如:    
      FormsAuthentication.SetAuthCookie(Username,true   |   false)    
      cookies保存时间:    
      HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(1)    
   
      如果需要存储角色,采用:    
    FormsAuthenticationTicket   authTicket   =   new    
    FormsAuthenticationTicket(    
                          1,   //   version    
                          txtUserName.Text,   //   user   name    
                          DateTime.Now,   //   creation    
                          DateTime.Now.AddMinutes(20),//   Expiration    
                          false,   //   Persistent    
                          roles   );   //   User   data    
      roles是一个角色字符串数组    
      string   encryptedTicket   =   FormsAuthentication.Encrypt(authTicket);   //加密    
   
      存入Cookie    
      HttpCookie   authCookie   =    
      new   HttpCookie(FormsAuthentication.FormsCookieName,    
      encryptedTicket);    
   
      Response.Cookies.Add(authCookie);    
   
  4,在Application_AuthenticateRequest事件中处理程序中(Global.asax)中,使用    
      票创建IPrincipal对象并存在HttpContext.User中    
      代码:    
      HttpCookie   authCookie   =   Context.Request.Cookies[FormsAuthentication.FormsCookieName];    
      FormsAuthenticationTicket   authTicket   =   FormsAuthentication.Decrypt(authCookie.Value);//解密    
      string[]   roles   =   authTicket.UserData.Split(new   char[]{';'});//根据存入时的格式分解,;或|....    
      Context.User   =   new   GenericPrincipal(Context.User.Identity,   Roles);//存在HttpContext.User中    
   
  5,需要对某些页面进行角色控制,有两种方法:    
    5.1,web.config中加    
          <location   path="EditPost.aspx">    
    <system.web>    
      <authorization>    
                                                  <allow   roles="RoleName"   />    
        <deny   users="?"   />    
      </authorization>    
    </system.web>    
          </location>    
    5.2,把只能是某种角色访问的文件放在同一目录下,在此目录下添加一个web.config    
        <configuration>    
            <system.web>    
    <authorization>    
                        <allow   roles="RoleName"   />    
          <deny   users="*"   />    
    </authorization>    
            </system.web>    
        </configuration>    
      说明:子目录的web.config设置优先于父目录的web.config设置    
     
  Top

10 楼flying310(林林)回复于 2005-07-22 14:22:45 得分 0

在程序中用session吧,何必非要在webconfig中配置呢?Top

11 楼yb2008(中科商务网--ZKE360.COM)回复于 2005-07-22 14:23:02 得分 0

第5点比较适合于你的这种情况Top

12 楼gengxin_914(星星)回复于 2005-07-22 15:33:40 得分 0

我用:FormsAuthenticationTicket   authTicket   =   new    
    FormsAuthenticationTicket(    
                          1,   //   version    
                          txtUserName.Text,   //   user   name    
                          DateTime.Now,   //   creation    
                          DateTime.Now.AddMinutes(20),//   Expiration    
                          false,   //   Persistent    
                          roles   );   //   User   data    
   
  我用:System.Web.HttpContext.Current.User.Identity.Name   ;可以取得当前的用户名。  
  但是我怎么才能取的当前用户是什么角色呢?Top

相关问题

  • form验证问题
  • 请教高人:FORM验证?
  • 奇怪问题,FORM验证?
  • form验证的问题
  • 多个form验证问题?
  • 基于数据库的form验证
  • form验证在框架下的问题
  • 一个关于form验证的问题
  • 关于form验证的一个问题
  • Form验证问题,大家看一下

关键词

  • asp.net

得分解答快速导航

  • 帖主:gengxin_914
  • tigerwen01
  • Truly
  • yb2008

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo