您的位置:首页 > 编程语言 > ASP

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框架的限制,可以使用我们自己的用户管理框架。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐