Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/1/30 0:51:51 Asp.Net,Ajax,学习笔记17,使用Authentication,Service_[Asp.Net教程]
为了保证Asp.Net Ajax调用的WebService的安全,保证不被任意调用有两种方法。
一、FormsAuthentication模式
这种模式是在WebService的方法中检查调用WebService的用户是否登陆。在调用方法里面首先就检测HttpContext.Current.User.Identity.IsAuthenticated是否为真,为真就是已授权用户否则就是未授权用户。这种方式需要使用FormsAuthentication.SetAuthCookie("Jeffrey Zhao", false)方法设置某个用户未已授权用户,当然也可以通过FormsAuthentication的框架来设置用户授权。通过FormsAuthentication.SignOut方法退出登陆。
二、AuthenticationService模式
这种模式是在客户端设置用户登陆。上一种方法是在服务端通过调用FormsAuthentication类的静态方法来设置用户登陆。我想也可以提供一个WebService来调用FormsAuthentication的静态方法来设置用户登陆。
要使用AuthenticationService模式,首先需要在webConfig中节点下节点下节点下添加 节点。requireSSL表示此站点是否是使用Https协议来进行通信的。
用户身份验证(登陆):login方法Sys.Services.AuthenticationService.login(userName,//用户名password, //密码isPersistent, //是否生成持久CookiecustomInfo, //预留字段redirectUrl, //登陆成功后跳转目标loginCompletedCallback, //身份验证完成回调函数failedCallback, //身份验证出错回调函数userContext//用户任意指定的上下文对象)
注意customInfo参数在此处没有任何意义,可能在下一版本有意义。不管用户名和密码是否匹配,只要进行了login并且没有出现网络异常或其他异常,都调用loginCompletedCallback回调函数。
登陆完成的回调函数
function loginCompletedCallback(validCredentials, //身份验证是否成功userContext, // 用户随意指定的上下文对象methodName//即"….login")
validCredentials为true表名用户名和密码匹配,否则为用户名和密码不匹配。失败的回调函数function failedCallback(error, // 错误对象userContext, // 用户随意指定的上下文对象methodName//即"….login")
注销功能:logout方法Sys.Services.AuthenticationService.logout(redirectUrl, // 注销后跳转页面logoutCompletedCallback, //注销成功回调函数failedCallback, //注销失败回调函数userContext//用户任意指定的上下文对象)
注销成功的回调函数
function logoutCompletedCallback(result, // 预留参数userContext, // 用户随意指定的上下文对象methodName//即"….logout")
注销失败的回调函数
function failedCallback(error, // 错误对象userContext, // 用户随意指定的上下文对象methodName//即"….logout")
timeout属性:用来设置或得到超时时间。
defaultLoginCompletedCallback属性:默认登陆成功的回调函数地址。当login函数指定了登陆成功的回调函数,以login函数的参数为准。
defaultLogoutCompletedCallback属性:默认注销成功的回调函数地址。
defaultFailedCallback属性:默认失败的回调函数地址。
在这里有几点需要说明:
AuthenticationService使用的是默认的memberShipProvider的框架,如果不扩展AuthenticationService服务,需要使用asp.net 配置工具进行用户的配置。否则,login函数不知道如何去哪个数据库去验证用户。asp.net配置工具可以完全的接管用户的管理,需要在配置中创建用户并设置密码。 使用asp.net配置工具时,如果要把数据库作为mdf文件存放在App_Data文件夹中,必须把SqlExpress服务打开,否则创建不了数据库文件。如果不是用数据库文件,使用sql Server 2005远程连接,则可以不用打开SqlExpress服务。
赞