asp.net 身份验证机制实例代码_实用技巧

ASP.NET提供了3种认证方式:windows身份验证、Forms验证和Passport验证。
windows身份验证: IIS根据应用程序的设置执行身份验证。要使用这种验证方式,在IIS中必须禁用匿名访问。
Forms验证:用Cookie来保存用户凭证,并将 未经身份验证的用户重定向到自定义的登录页。
Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录和核心配置文件服务。

关于这三种验证方式的配置,推荐一篇文章:http://www.jb51.net/article/30510.htm

我这里详解Forms验证方式,在ASP.NET项目中的实际应用与深度理解。

对于ASP.NET验证机制在项目开发中运用,会使项目非常方便快捷的实现页面的访问权限问题,而且省去了一些没必要的安全问题。
对于ASP.NET提供的验证机制,要深度的理解后才能灵活的运用。对于整个项目的访问权限,有时候我们需要对部分页面的访问权限进行限制,又不影响其他公共页面的访问。举个实际项目的例子。
案例:有一个ASP.NET的项目,对整个项目访问限制,不允许匿名用户访问,登录页面除外。
  问题是,登录页面(假设是:Manager目录下的Login.aspx文件)中应用的Script的的一个文件(假设这个文件是:Script/jquery-1.7.1.min.js)

1.web.config配置文件

复制代码 代码如下:

<!--配置Forms身份认证 不允许匿名用户访问,否则跳转到/Manager/login.aspx 页面 -->
<authentication mode="Forms">
<forms name="myTeacher" loginUrl="~/Manager/login.aspx" protection="All" path="/" timeout="60"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>

现在我们可以理解为:当用户打开程序时,会自动转到Manager/login.aspx页面,但是这个页面引用的jquery-1.7.1.min.js文件是不可用的。因为,限制了所有的匿名用户只能访问Login.aspx页面,只有当注册票据之后其它的页面或文件才能正常访问。所以当匿名用户需要有权限访问jquery-1.7.1.min.js文件,就需要设置某个文件或者文件的访问权限为所有用户。

复制代码 代码如下:

<!--允许所有用户访问Script文件夹-->
<location path="Script">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>

path可以只想某个具体的文件,比如"Script/Script/jquery-1.7.1.min.js",这里设置“Script”文件夹表示,允许匿名用户访问“Script”文件夹下面的所以文件

复制代码 代码如下:

<!--
定义 ASP.NET身份验证机制
-->
<!--允许所有用户访问Script文件夹-->
<location path="Script">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>

<system.web>
<customErrors mode="Off" defaultRedirect="../error.aspx"/>

<!--配置Forms身份认证 不允许匿名用户访问,否则跳转到/Manager/login.aspx 页面 -->
<authentication mode="Forms">
<forms name="myTeacher" loginUrl="~/Manager/login.aspx" protection="All" path="/" timeout="60"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>

2.登录注册票据

  当登录页面登录提交并登录成功后,注册票据,当注册票据之后,相当于当前用户的身份已经不是匿名用户,没有了访问权限的限制。FormsAuthentication的命名空间是:using System.Web.Security;

FormsAuthentication.RedirectFromLoginPage(UserID, false); //页面注册 关键 UsersID表示登录ID
3.撕毁票据(退出系统)

FormsAuthentication.SignOut(); //撕毁票据 退出登录

时间: 2024-08-01 16:14:03

asp.net 身份验证机制实例代码_实用技巧的相关文章

asp.net 通用的连接数据库实例代码_实用技巧

View Code 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <center><h2><font face="宋体">访问数据库的通用代码实例</font></h2>

ASP.Net邮箱发邮件实例代码_实用技巧

复制代码 代码如下:  public static void SendEmail()    {         System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();        //这里使用QQ的邮箱来发送测试,如果是其它邮箱,请根据其它邮箱POP3/IMAP/SMTP服务来设置         client.Host = "smtp.qq.com";        client.UseDefaul

asp.net 无刷新分页实例代码_实用技巧

数据类代码: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Collections;using System.Reflection; namespace DAL{    public  class UserManageClass    {  

asp.net StringBuilder的用法 实例代码_实用技巧

要实现上述效果 复制代码 代码如下: public static string ShowNewMsg() { string Pic1 = "images/yzdp-_15.gif"; string Pic2 = "images/yzdp-_18.gif"; string Pic3 = "images/yzdp-_20.gif"; string Pic4 = "images/yzdp-_22.gif"; string Pic5

Asp.net中安全退出时清空Session或Cookie的实例代码_实用技巧

概览: 网站中点击退出,如果仅仅是重定向到登录/出页面,此时在浏览器地址栏中输入登录后的某个页面地址如主页,你会发现不用登录就能访问.这种所谓的退出并不是安全的. 那么怎样做到安全退出呢? 那就是点击退出后清空相应的Session或Cookie. 清空Session的代码: Session.Clear(); Session.Abandon(); 清除Cookie的正确代码(假设Cookie名称为UserInfo): if (Request.Cookies["UserInfo"] !=

.net jMail邮件发送(含抄送、密送、多发、日志记录)实例代码_实用技巧

jmail是一个第三方邮件操作组件,通常位于web服务器端,实现收邮件及发邮件功能(客户端用Foxmail这类就很好了).可以利用它轻松实现发邮件.抄送.密送.多发.日志记录及收邮件功能.本章要讲的,就是:发邮件.抄送.密送.多发.日志记录. 一.组件准备下载JMail44_pro并安装(记下安装路径) 找到安装路径,将其中的jmail.dll复制到项目中 二.核心发送代码新建MailAPI.cs,并输入以下代码 复制代码 代码如下: using System;using System.Coll

asp.net导出EXCEL的功能代码_实用技巧

复制代码 代码如下: //由gridviw导出为Excel public static void ToExcel(System.Web.UI.Control ctl) { HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls"); HttpContext.Current.Response.Charset = "UTF-8

asp.net 数字签名实例代码_实用技巧

A给B发送信息,A会将信息用A的密码进行加密,然后将加密后的字符串和原文一起发给B,然后B用B的密码进行解密,然后判断解密后的字符串和A发过来的原文比对是否一致,关键问题在于, A和密码和B的密码不一样,这个才是数字签名的精华,A的密码就是私钥,B的密码就是公钥 具体步骤: 生成一个私钥和公钥,A就用私钥进行加密,因为A的私钥只有A自己有,所以加密后的字符串就是A的签名字符串,然后A将这个签名的字符串和原文发给B, B获取加密的字符串用公钥进行解密,然后判断解密后的字符串和原文是否一致,一致说明

ASP.NET连接SQL数据库的简单实例代码_实用技巧

复制代码 代码如下: using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HTMLControls;us