仓酷云

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

[学习教程] ASP.NET网站制作之[ASP.NET]更复杂的办法:FormsAuthentication登录ReturnUrl利用相对路径仓酷云 ...

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

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

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

x
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?被这个成绩困扰多年,明天终究找到了更复杂的办理办法,分享一下。
成绩场景
假定我们在i.cnblogs.com站点的web.config中对FormsAuthentication举行了以下的设置:
  1. <authenticationmode="Forms"><formsname=".cnblogs"loginUrl="https://passport.cnblogs.com/login.aspx"protection="All"path="/"/></authentication>
复制代码
当我们会见一个必要登录后才干会见的URL时,好比:http://i.cnblogs.com/post/list,哀求会被重定向至以下的地点:
  1. https://passport.cnblogs.com/login.aspx?ReturnUrl=%2fpost%2flist
复制代码
瞧!经由过程ReturnUrl查询参数传送给登录页面的是绝对路径——这就是成绩地点。因为会见的页面与登录页面不在统一个二级域名下,利用这个绝对路径是Return不返来的。
成绩的本源
用ILSPY看一下System.Web.Security.FormsAuthentication的代码,立马就可以晓得成绩缘故原由地点:
  1. internalstaticstringGetLoginPage(stringextraQueryString,boolreuseReturnUrl){//...if(text2==null){text2=HttpUtility.UrlEncode(current.Request.RawUrl,current.Request.ContentEncoding);}text=text+FormsAuthentication.ReturnUrlVar+"="+text2;if(!string.IsNullOrEmpty(extraQueryString)){text=text+"&"+extraQueryString;}returntext;}
复制代码

由码可见,微软基本就忽视了登录页面不在统一个二级域名的基础使用场景,并且一向忽视到如今。
之前的办理办法
在以后站点增加一其中转页面,由直达页面重定向至登录页面。
因而,web.config的设置酿成了以下的模样,先重定向至以后站点的登录直达页面。
  1. <authenticationmode="Forms"><formsname=".cnblogs"loginUrl="~/account/login"protection="All"path="/"/></authentication>
复制代码
然后,在直达页面利用相对路径作为ReturnUrl的值,再重定向至真实的登录页面。
直达页面的示例代码以下:
  1. publicclassAccountController:Controller{publicActionResultLogin(stringReturnUrl){returnRedirect("https://passport.cnblogs.com/login.aspx?ReturnUrl="+HttpUtility.UrlEncode("http://"+Request.Url.Host)+ReturnUrl);}}
复制代码

固然办理了成绩,可是关于如许的办理办法,我以为有些拢芫醯糜懈玫慕饩龇椒ǎ墒且恢泵徽业健
不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……
山那边是海 该用户已被删除
沙发
发表于 2015-1-20 18:22:27 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
再见西城 该用户已被删除
板凳
发表于 2015-1-28 15:34:28 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
莫相离 该用户已被删除
地板
发表于 2015-1-29 19:33:54 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
5#
 楼主| 发表于 2015-2-6 03:38:42 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
因胸联盟 该用户已被删除
6#
发表于 2015-2-7 01:54:16 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
活着的死人 该用户已被删除
7#
发表于 2015-2-19 13:54:22 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
若天明 该用户已被删除
8#
发表于 2015-3-5 07:15:29 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
兰色精灵 该用户已被删除
9#
发表于 2015-3-12 00:03:47 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
精灵巫婆 该用户已被删除
10#
发表于 2015-3-13 06:59:51 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-20 15:26:21 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-11 18:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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