ASP.NET教程之基于DotNetOpenAuth的OAuth完成示例代码: 猎取access token仓酷云
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到net网页编程编译器那么简易。1.场景依据OAuth2.0标准,该场景产生于上面的流程图中的(D)(E)节点,依据已失掉的authorizationcode猎取accesstoken。
2.完成情况
DotNetOpthAuthv5.0.0-alpha3,ASP.NETMVC5,.NETFramework4.5.1。
2.次要完成示例代码
2.1.AuthorizationServer完成代码
2.1.1.ASP.NETMVCController完成代码
usingSystem.Threading.Tasks;usingSystem.Web.Mvc;usingCNBlogs.Open.Domain.Entities.OpenAuth;usingDotNetOpenAuth.OAuth2;usingDotNetOpenAuth.Messaging;namespaceCNBlogs.Open.Web.Controllers{publicclassOAuthController:Controller{publicasyncTask<ActionResult>Token(){varauthServer=newAuthorizationServer(newAuthorizationServerHost());varresponse=awaitauthServer.HandleTokenRequestAsync(Request);returnresponse.AsActionResult();}}}
2.1.2.IAuthorizationServerHost接话柄现
必要完成IsAuthorizationValid与CreateAccessToken这两个办法,完成代码以下:
publicclassAuthorizationServerHost:IAuthorizationServerHost{publicboolIsAuthorizationValid(IAuthorizationDescriptionauthorization){returnauthorization.ClientIdentifier=="webclientdemo"&&ClientIdentifier.;}publicAccessTokenResultCreateAccessToken(IAccessTokenRequestaccessTokenRequestMessage){varaccessToken=newAuthorizationServerAccessToken{Lifetime=TimeSpan.FromHours(10),SymmetricKeyStore=this.CryptoKeyStore,};varresult=newAccessTokenResult(accessToken);returnresult;}}
2.2Client完成代码
namespaceOAuthWebClient.Controllers{publicclassOAuthController:Controller{privatestaticreadonlystringCLIENT_ID="webclientdemo";publicasyncTask<ActionResult>Redirect(stringcode){varhttpClient=newHttpClient();varqueryDict=newDictionary<string,string>{{"grant_type","authorization_code"},{"code",code},{"redirect_uri",Request.Url.Scheme+"://"+Request.Url.Host+Request.Url.AbsolutePath},{"client_id",CLIENT_ID},{"client_secret","webclientdemosecret"}};varhttpContent=newFormUrlEncodedContent(queryDict);varresponse=awaithttpClient.PostAsync(Request.Url.Scheme+"://open.cnblogs.com/oauth/token",httpContent);returnContent(awaitresponse.Content.ReadAsStringAsync());}}}
思索到跨平台会见的便利性,未利用DotNetOpenAuth.OAuth2.WebServerClient。
3.参考材料:
[*]DotNetOpenAuth源代码:https://github.com/DotNetOpenAuth/DotNetOpenAuth
[*]OAuth2.0标准:http://tools.ietf.org/html/rfc6749
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如net网页编程改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。 asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦! 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
页:
[1]