Asp.Net Ajax 学习笔记18 Authentication Service的实现方式与扩展
2007-12-30 16:21
856 查看
从根本上来说Authentication Service是通过Ajax调用WebService,在WebService里通过使用Membership的验证方式来验证用户,验证用户通过以后调用FormAuthentication.SetAuthCookie方法使用户处于验证通过状态。这一段可以通过读源代码来了解。
在服务端就是WebService时我们也可以操作Cookie。AJAX请求(XMLHttpRequest )其实就是普通的请求,服务器端无法识别客户端请求方式。AJAX请求也拥有普通请求的特点。在服务器端使用普通的方式操作Cookie即可。
在读源代码的时候,觉得有两个类需要注意以下
VirtualPathUtility类,这个类实现了对虚拟路径的一些操作方法,如一个虚拟路径转化为绝对路径等等。
BuildManager类,微软内部使用的类,基本上没有相关的文档,从字面意义上理解是管理编译以后的程序集,里面有一些反射方法。
通过观察Authentication Service的实现方式,扩展Authentication Service有两个方向
1、扩展Membership。扩展Membership需要实现27个成员,但是Authentication Service使用的仅仅需要扩展ValidateUser方法,即我们可以在ValidateUser方法里面访问我们自己的数据库,来验证用户,通过验证返回true,否则返回false。然后在webConfig里配置下列节点
<membership defaultProvider="SampleProvider">
<providers>
<add name="SampleProvider"
type="SampleMembershipProvider" />
</providers>
</membership>
通过此节点告诉应用程序,现在使用的Membership是SamlpeMembershipProvider类。
但这种方式仍然是通过Cookie在标识用户通过验证,因为在Authentication Service里还是使用FormAuthenticaton.SetAuthCookie来设置用户通过验证标识。
2、扩展Authentication Service类。扩展这个类,我们可以完全摆脱Membership的束缚,并且还可以完全更换保存用户通过验证标识的方式(可以使用Session等等)。扩展这个类实现的方法比扩展Membership实现的方法少的多。在扩展的WebService里,我们只需要实现Login和Logout两个方法
public bool Login(string userName, string password, bool createPersistentCookie) {
}
public void Logout() {
}
注意扩展这两个方法时参数列表一定要完全相同,包括参数名。
实现了这两个方法之后,在ScirptManager里面加上Authentication Service的路径
<asp:ScriptManager runat="server" ID="ScriptManager1">
<AuthenticationService Path=“…" />
</asp:ScriptManager>
那么我们在客户端调用Login和Logout方法就是调用我们实现的Authentication Service。这种方式,我们可以使用Session等方式来保存用户通过验证标识,摆脱了FormAuthentication使用的方式,也摆脱了Membership框架的限制,可以使用我们自己的用户管理框架。
在服务端就是WebService时我们也可以操作Cookie。AJAX请求(XMLHttpRequest )其实就是普通的请求,服务器端无法识别客户端请求方式。AJAX请求也拥有普通请求的特点。在服务器端使用普通的方式操作Cookie即可。
在读源代码的时候,觉得有两个类需要注意以下
VirtualPathUtility类,这个类实现了对虚拟路径的一些操作方法,如一个虚拟路径转化为绝对路径等等。
BuildManager类,微软内部使用的类,基本上没有相关的文档,从字面意义上理解是管理编译以后的程序集,里面有一些反射方法。
通过观察Authentication Service的实现方式,扩展Authentication Service有两个方向
1、扩展Membership。扩展Membership需要实现27个成员,但是Authentication Service使用的仅仅需要扩展ValidateUser方法,即我们可以在ValidateUser方法里面访问我们自己的数据库,来验证用户,通过验证返回true,否则返回false。然后在webConfig里配置下列节点
<membership defaultProvider="SampleProvider">
<providers>
<add name="SampleProvider"
type="SampleMembershipProvider" />
</providers>
</membership>
通过此节点告诉应用程序,现在使用的Membership是SamlpeMembershipProvider类。
但这种方式仍然是通过Cookie在标识用户通过验证,因为在Authentication Service里还是使用FormAuthenticaton.SetAuthCookie来设置用户通过验证标识。
2、扩展Authentication Service类。扩展这个类,我们可以完全摆脱Membership的束缚,并且还可以完全更换保存用户通过验证标识的方式(可以使用Session等等)。扩展这个类实现的方法比扩展Membership实现的方法少的多。在扩展的WebService里,我们只需要实现Login和Logout两个方法
public bool Login(string userName, string password, bool createPersistentCookie) {
}
public void Logout() {
}
注意扩展这两个方法时参数列表一定要完全相同,包括参数名。
实现了这两个方法之后,在ScirptManager里面加上Authentication Service的路径
<asp:ScriptManager runat="server" ID="ScriptManager1">
<AuthenticationService Path=“…" />
</asp:ScriptManager>
那么我们在客户端调用Login和Logout方法就是调用我们实现的Authentication Service。这种方式,我们可以使用Session等方式来保存用户通过验证标识,摆脱了FormAuthentication使用的方式,也摆脱了Membership框架的限制,可以使用我们自己的用户管理框架。
相关文章推荐
- Asp.Net Ajax 学习笔记16 Profile Service扩展方式
- asp.net ajax 学习笔记--对javascript对象的扩展
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- Asp.Net Ajax 学习笔记12 基于Microsoft AJAX Library扩展客户端组件
- Asp.Net Ajax 学习笔记9 JavaScript的原生类型以及Microsoft AJAX Library的相关扩展(上)
- Asp.Net Ajax 学习笔记10 JavaScript的原生类型以及Microsoft AJAX Library的相关扩展(下)
- Asp.Net Ajax 学习笔记14 扩展Microsoft AJAX Library的异步通信层
- 学习笔记18 复习asp.net页面传参数的几种方式
- ASP.NET AJAX 学习笔记
- 学习笔记(1)在 ASP.NET 网页中不经过回发而实现客户端回调
- ASP.Net MVC开发基础学习笔记(4):校验、AJAX与过滤器
- ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
- Asp.Net Ajax 学习笔记13 Microsoft AJAX Library中异步通信层(摘自网络)
- 黑马程序员_学习笔记15_asp.net之验证码实现原理初探
- ASP.NET Ajax 控件 MutuallyExclusiveCheckBox ,ModalPopup,Rating 学习笔记
- ASP.NET 3.5核心编程学习笔记(51):AJAX基础
- ASP.NET 3.5核心编程学习笔记(52):Microsoft AJAX JavaScript类库
- ASP.NET学习系列(五)开始控件之旅之TextBox及其Ajax扩展控件
- ASP.Net MVC开发基础学习笔记(4):校验、AJAX与过滤器
- ASP.NET ZERO 学习 —— (18) 应用开发Demo之扩展电话信息