日期:2012-09-02  浏览次数:21217 次

前段时间在学习后台登录验证的问题,听说forms身份验证要比较的方便,于是研究了一番,结果发现网上的资料都不全(或者不适合初学者),出了好多的问题,现在我把我的代码公布出来,希望能给大家一些帮助.
我的后台文件全部放在admin目录下,后台的登录口为admin_login.aspx,现在要实现的功能是:
不能直接访问admin目录下除了admin_login.aspx(即登录口)文件以外的文件,但是前台的文件,比如default.aspx等,要不受forms验证的影响,也就是说,即使没有登录,访问default.aspx时,也不能转到admin_login.aspx.

下面说一下实现过程:
在web.config文件中,设为forms身份验证:
<authentication mode="Forms">
<forms name=".LoginUser" loginUrl="admin/admin_login.aspx" protection="All" timeout="30" />
</authentication>
<authorization>
<allow users="*" />
</authorization>

然后在</system.web>后还要加入:

<location path="admin">
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>

否则无论访问哪个文件,都会转到登录口的,加了上面这段代码后,就只有访问admin目录下的文件时可能转到admin_login.aspx,以上就是web.config文件中的设置,接下来就是后台登录按钮的代码了:

//检查登录的用户名和密码是否正确,我用的是从数据库中检查的方法,你可以用其它方法,这里就不说了.
if (OpenData.CheckUser(strSql,"ToEmpire_UserInfo"))
{
//保存登录的用户名
Session["LoginUser"] = strLoginUser;

//这一句就是关键,strLoginUser为登录框中的用户名.false为不永久记录.
FormsAuthentication.RedirectFromLoginPage(strLoginUser,false);

Response.Redirect("admin_index.aspx");
}

以上就是forms身份验证的实现过程了,希望对各位有用.如果有什么疑问,请在这里留言,我看到的话会回复的.