仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1948|回复: 10
打印 上一主题 下一主题

[学习教程] ASP.NET教程之基于DotNetOpenAuth的OAuth完成示例代码: 猎取access token仓酷云

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到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完成代码
  1. 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这两个办法,完成代码以下:
  1. 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完成代码
  1. 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编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
山那边是海 该用户已被删除
5#
发表于 2015-2-6 03:23:48 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
小女巫 该用户已被删除
6#
发表于 2015-2-15 09:19:16 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
若相依 该用户已被删除
7#
发表于 2015-3-4 11:24:07 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
简单生活 该用户已被删除
8#
发表于 2015-3-10 12:30:36 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
蒙在股里 该用户已被删除
9#
 楼主| 发表于 2015-3-11 15:26:08 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
10#
发表于 2015-3-12 05:33:31 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
第二个灵魂 该用户已被删除
11#
发表于 2015-3-19 18:17:19 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-26 11:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表