·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 关于ASP.NET的“Forms身份验证”

关于ASP.NET的“Forms身份验证”

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

关于asp.net的“Forms身份验证”

目录结构如图如示:

如果用户没有通过身份验证则跳转到登录页面让用户登录,在配置文件的<system.web></system.web>结点下添加如下代码:

<!--身份验证方式-->

<authenticationmode="Forms">

<formsloginUrl="~/Login.aspx"/>

</authentication>

<!--授权-->

<authorization>

<!--deny:阻止,?:匿名用户,*:所有用户-->

<denyusers="?"/>

</authorization>

登录的后台代码为(在这里用户名和密码都设置为admin,chkPWD:是否记住密码):

首先导入命名空间:usingSystem.Web.Security;

if(TextBox1.Text=="admin"&&TextBox2.Text=="admin")

{

//将通过身份验证的用户重定向回原来请求的页面,(例如未登录用户从Default.aspx点击进入ShoppingCard.aspx, 由于ShoppingCard.aspx不允许匿名用户访问,则倒跳转到Login.aspx,在通过验证后,页面会自动中转到ShoppingCard.aspx) 如果用户从Public目录里的Reg.aspx点击跳转到Login.aspx,通过验证后页面会默认跳转到default.aspx

FormsAuthentication.RedirectFromLoginPage(TextBox1.Text,chkPWD.Checked);

}

else

{

Response.Write("用户名或密码错误");

}Public目录下的页面(如用户注册页面,允许匿名用户访问以注册账号),由于在web.config文件中设置了阻止匿名用户访问,所以要实现匿名用户能够访问Public目录下的页面,在这里有两种方法:方法一:在Public目录下添加配置文件web.config,并在<system.web></system.web>结点下添加代码:

<!--允许所有用户访问该目录下的所有页面:allow表示允许用户访问-->

<authorization>

<allowusers="*"/>

</authorization>

方法二:

如果不想在Public目录下添加配置文件web.config,则可以修改根目录下的web.config,在之前默认的</system.web>结点下面再添加如下代码:

<locationpath="Public">

<system.web>

<authorization>

<allowusers="*"/>

</authorization>

</system.web>

</location>则整个web.config的代码结构如下所示:还有一种情况就是当前目录下的所有页面都阻止匿名访问,但是有一个页面可以匿名访问,比如Default.aspx页面,则可以将上面的location结点的path属性的值修改为这个可以访问的页面<lcation path="Default.aspx">这样就实现了当面目录下除了Default.aspx和Login.aspx,以外的所有页面都要登录用户能访问。如果要退出登录则可以通过:FormsAuthentication.SignOut(); 销毁用户登录的凭据FormsAuthentication.RedirectToLoginPage();重定向到用户登录页面Request.IsAuthenticated 能判断用户是否通过验证,即用户是否登录,登录则返回true,否则返回false,这样可以实现向登录用户和未登录用户显示不用的页面信息。User.Identity.Name能获取当前登录用户的用户名,也就是登录的时候FormsAuthentication.RedirectFromLoginPage(TextBox1.Text,chkPWD.Checked)里的TextBox1.Text。