forms 验证?

denghong 2003-08-23 10:12:46
目录如下: Main ____Book/*.*
|___Ticket/*.*
|___Help/*.*
|..........(全部是目录)
|___index.aspx(登陆页)(输入用户名及口令)
|___web.config

我希望用户必须从登陆页登陆,验证合法后,才能访问Main目录下,所有目录中的文件。请大家多多帮助!
...全文
49 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
useBook 2003-12-14
  • 打赏
  • 举报
回复
收藏
saucer 2003-08-24
  • 打赏
  • 举报
回复
>>>>我在程序验证用户合法后,加了一句:ForsAuthentication.SetAuthCookie("",False),
就可以了,为什么?

that is how it works


>>>>这样做的验证,是不是包括了Main下的所有目录+文件,

suppose so

>>>如果,文件不想被验证呢?

add a location element to your web.config:


<configuration>

<system.web>
<authentication mode="Forms">
<forms name=".theDefault"
loginUrl="index.aspx"
path="/"
protection="All"
timeout="15" >
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>

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

</configuration>



stpangpang 2003-08-24
  • 打赏
  • 举报
回复
web.config 的配置
<authentication mode="Forms">
<forms name="login" path="/" loginUrl="login.aspx">
<credentials passwordFormat="Clear">
<user name="guest" password="guest"/>
</credentials>
</forms>


</authentication>

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

起始页为 default.aspx, 登陆页面为login.aspx ;
stpangpang 2003-08-24
  • 打赏
  • 举报
回复
login.aspx.cs

//从数据库读取用户的权限
string role=reader.GetInt32(0).ToString();
//产生 Ticket
FormsAuthenticationTicket userTicket=new FormsAuthenticationTicket(1,uid,
DateTime.Now,DateTime.Now.AddMinutes(30),true,role,"login");

//加密票据
string hashUserTicket=FormsAuthentication.Encrypt(userTicket);
//产生新的Cookie
HttpCookie userCookie=new HttpCookie("login",hashUserTicket);
Response.Cookies.Add(userCookie);


//返回用户原来返回的页面
Context.Response.Redirect(Context.Request["ReturnUrl"],true);

global.asax.cs

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpApplication app=(HttpApplication)sender;
HttpContext ctx=app.Context;
//如果验证成功
if(ctx.Request.IsAuthenticated==true)
{
FormsIdentity typeID=(FormsIdentity)ctx.User.Identity;
FormsAuthenticationTicket ticket=typeID.Ticket;
string []role=ticket.UserData.Split(',');
ctx.User=new GenericPrincipal(typeID,role);
}
}

文件夹底下的web.config的培植
<authorization>
<allow roles="1"/>
<deny users="*"/>
</authorization>

我的权限 role 有三种, 为这三个权限建立三个 文件夹

要 导入的命名空间

using System.Web.Security;
using System.Security.Principal;
stpangpang 2003-08-24
  • 打赏
  • 举报
回复
可以将文件放在一个文件夹底下,这个文件夹下放置 web.config 只允许一定权限的人访问

等会贴代码 ~~
denghong 2003-08-24
  • 打赏
  • 举报
回复
是这个意思吗:index.aspx 里有 textbox,panel,lable ,button,image

我在程序验证用户合法后,加了一句:ForsAuthentication.SetAuthCookie("",False),
就可以了,为什么?这样做的验证,是不是包括了Main下的所有目录+文件,如果,文件不想被验证呢?
saucer 2003-08-23
  • 打赏
  • 举报
回复
what is in your index.aspx?
neodotnet 2003-08-23
  • 打赏
  • 举报
回复
如果用户量大的话就用cookie
neodotnet 2003-08-23
  • 打赏
  • 举报
回复
用户验证合法后,Session["aa"] = "aaa";
在其他页面的Page_Load()中检查Session["aa"]的值

if (Session["aa"] == null)
Response.Redirect("Login.aspx");
denghong 2003-08-23
  • 打赏
  • 举报
回复
请给于指点!
denghong 2003-08-23
  • 打赏
  • 举报
回复
saucer(思归, .NET MVP) :
我这样试了,输入合法的用户名及密码也只能进入index.aspx,别的任何页面都跳转到index.aspx。是不是还需要修改程序,加以配合。
saucer 2003-08-23
  • 打赏
  • 举报
回复
you just need to change your web.config:


<configuration>
<system.web>
<authentication mode="Forms" loginUrl="index.aspx"/>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>


see
http://samples.gotdotnet.com/quickstart/aspplus/doc/formsauth.aspx
sizheng0320 2003-08-23
  • 打赏
  • 举报
回复
听说过做功能树,用treeview,比如说根据权限给出不同的树结构。
不过我没做过。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧