蒙在股里 发表于 2015-1-18 11:14:32

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就不能在手机上执行,手机的游戏也不能直接在微机上执行。

灵魂腐蚀 发表于 2015-1-20 18:22:49

asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!

变相怪杰 发表于 2015-1-24 13:18:17

可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

兰色精灵 发表于 2015-1-29 19:20:08

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

山那边是海 发表于 2015-2-6 03:23:48

ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。

小女巫 发表于 2015-2-15 09:19:16

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

若相依 发表于 2015-3-4 11:24:07

当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。

简单生活 发表于 2015-3-10 12:30:36

对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。

蒙在股里 发表于 2015-3-11 15:26:08

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

仓酷云 发表于 2015-3-12 05:33:31

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

第二个灵魂 发表于 2015-3-19 18:17:19

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
页: [1]
查看完整版本: ASP.NET教程之基于DotNetOpenAuth的OAuth完成示例代码: 猎取access token仓酷云