关于ASP.NET的“Forms身份验证”
目录结构如图如示:

如果用户没有通过身份验证则跳转到登录页面让用户登录,在配置文件的<system.web></system.web>结点下添加如下代码:
<!--身份验证方式-->
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx" />
</authentication>
<!--授权-->
<authorization>
<!--deny:阻止,?:匿名用户,*:所有用户-->
<deny users="?"/>
</authorization>
登录的后台代码为(在这里用户名和密码都设置为admin,chkPWD:是否记住密码):
首先导入命名空间:using System.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>
<allow users="*"/>
</authorization>
方法二:
如果不想在Public目录下添加配置文件web.config,则可以修改根目录下的web.config,在之前默认的</system.web>结点下面再添加如下代码:
<location path="Public">
<system.web>
<authorization>
<allow users="*"/>
</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。
关于ASP.NET的“Forms身份验证”的更多相关文章
- 采用Asp.Net的Forms身份验证时,持久Cookie的过期时间会自动扩展
原文:http://www.cnblogs.com/sanshi/archive/2012/06/22/2558476.html 若是持久Cookie,Cookie的有效期Expiration属性有当 ...
- 采用Asp.Net的Forms身份验证时,非持久Cookie的过期时间会自动扩展
问题描述 之前没有使用Forms身份验证时,如果在登陆过程中把HttpOnly的Cookie过期时间设为半个小时,总会收到很多用户的抱怨,说登陆一会就过期了. 所以总是会把Cookie过期时间设的长一 ...
- asp.net的forms身份验证 单用户身份验证
asp.net的forms身份验证 单用户身份验证 首先要配置Web.config文件 <system.web> <authentication mode="Forms& ...
- ASP.NET:Forms身份验证和基于Role的权限验证
从Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更换身份验证的组件,都让我更失望.Membership的唯一作用就是你可以参考它的实现 ...
- ASP.NET Forms 身份验证
ASP.NET Forms 身份验证 在开发过程中,我们需要做的事情包括: 1. 在 web.config 中设置 Forms 身份验证相关参数.2. 创建登录页. 登录页中的操作包括: 1. 验证用 ...
- asp.net Forms身份验证详解
在做网站的时候,都会用到用户登录的功能.对于一些敏感的资源,我们只希望被授权的用户才能够访问,这让然需要用户的身份验证.对于初学者,通常将用户登录信息存放在Session中,笔者在刚接触到asp.ne ...
- asp.net Forms身份验证
Web.config中的配置<system.web><authentication mode="Forms"> <forms name="K ...
- 也谈Asp.net 中的身份验证
钱李峰 的这篇博文<Asp.net中的认证与授权>已对Asp.net 中的身份验证进行了不错实践.而我这篇博文,是从初学者的角度补充了一些基础的概念,以便能有个清晰的认识. 一.配置安全身 ...
- Forms身份验证和基于Role的权限验证
Forms身份验证和基于Role的权限验证 从Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更换身份验证的组件,都让我更失望.Memb ...
随机推荐
- Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方 ...
- MyBatis入门学习(二)
在MyBatis入门学习(一)中我们完成了对MyBatis简要的介绍以及简单的入门小项目测试,主要完成对一个用户信息的查询.这一节我们主要来简要的介绍MyBatis框架的增删改查操作,加深对该框架的了 ...
- 知方可补不足~SQL中的count命令的一些优化措施(百万以上数据明显)
回到目录 SQL中对于求表记录总数的有count这个聚合命令,这个命令给我们感觉就是快,比一般的查询要快,但是,当你的数据表记录比较多时,如百万条,千万条时,对于count来说,就不是那么快了,我们需 ...
- 1121冬至!!!巩固HTML基础第一堂
今天只是把以前的知识巩固了一下.温故而知新,说的一点没错: 又新明白了一种居中对齐方法: 水平居中:align left(左侧对齐),center(居中对齐) 垂直居中:ralign top(上对齐) ...
- Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结
Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结 1.1. 原理,主要使用像素模糊后的差别会变小1 1.2. 具体流程1 1.3. 提升性能 可以使用采样法即可..1 ...
- FIR.im Weekly - 劳动节我们也没有停下来
五一到五四的节假日对勤劳的开发者们似乎是零存在,各种干货好资源也并未因假期的到来而减少,所以这周的 Weekly 依然多产. Swift 样式指南:2015年4月更新 这是 @开发技术前线 收录的由 ...
- salesforce 零基础学习(二十二)Test简单使用
本篇内容只是本人简单的mark开发中常出现的一些疑问,方便后期项目使用时奠定基础,如果对Test零基础童鞋,欢迎查看Test官方的使用介绍: https://help.salesforce.com/a ...
- mysql创建数据库指定编码uft8
mysql创建数据库指定编码uft8 CREATE DATABASE IF NOT EXISTS my_db default character set utf8 COLLATE utf8_gener ...
- css绘制三角形原理
1.新建一个元素,将它的宽高都设置为0:然后通过设置border属性来实现三角形效果,下面是css绘制三角形的原理: <!DOCTYPE html> <html> <he ...
- CCNA基础 IP地址子网划分
计算机是一个非常神奇的物品,它的核心算法是凌驾于任何代码架构.然而互联网网络( Internat )作为整个生态的基础资源.什么?你还不会子网划分? 没关系,看到子网掩码不要怕.因为它无非就是问你 & ...