为外部链接创建另一个登录页面

时间:2011-10-17 22:29:31

标签: asp.net-mvc asp.net-mvc-3 model-view-controller

我想为外部直接链接创建另一个登录页面(多个项目需要身份登录页面外观。)

是否可以为登录控制器创建另一个视图,或者我需要创建另一个控制器?我试图创建另一个控制器,但我根本无法访问。

是否有人对此有了一些好主意?

干杯

2 个答案:

答案 0 :(得分:0)

如果您使用相同的身份验证机制,则只需将外部URL作为参数

传递
http://yourwebsite/Account/LogOn?returnUrl=<external url>

然后在身份验证后将页面重定向到返回URL。

答案 1 :(得分:0)

登录返回外部链接是一个坏主意。不要那样做。请参阅Wrox Professional ASP.NET MVC 3书籍的第7章。 这称为开放重定向攻击。帐户控制器的ASP.NET MVC 3 Internet模板中的代码阻止了Open Redirect,但允许它的风险是任何人都可以在返回URL查询字符串中使用恶意URL发布指向您站点登录地址的链接。通过允许此Open Redirect,您可以使网站的访问者更容易进行社交工程。黑客可以向您的用户发送指向您网站的链接。他们点击,看起来你的网站,地址栏是正确的,网站显示安全,证书良好和所有。他们登录,然后他们被您的网站重定向到外部网址。外部URL可能会运行任何代码,并且可能使您的用户容易受到任意数量的攻击/ javascript攻击。

我知道我特别提到了MVC,但任何网站都是如此。

如果您需要另一个站点的登录页面,则需要将控制器和视图复制到该项目,以及在该项目中设置配置(您可以查看现有项目以获取相应的设置)。

您的网站是否全部相关,具有相同的用户等?或者他们分开不同的网站?如果它们都是相关的,你能把它们放在一个项目中吗?这样你就可以使用一个会员提供者和数据库,以及网站不同部分的不同控制器/视图文件夹?

或者您是否在可以使用Windows身份验证并跳过显示登录页面的域中?

或者您是否希望在Azure或STS服务器中的ACS等应用程序上使用单点登录。 (在WIF上寻找好的/现代的书,讨论ACS 2.0,如果是的话)