我到达我的登录页面,参数“returnUrl”设置为我所在的URL。然后,我通过OpenID(DotNetOpenAuth)登录,并致电FormsAuthentication.RedirectFromLoginPage()
。登录成功,但我没有返回到我所在的原始页面。
我在注销时遇到同样的问题 - 当我退出时,即使注销链接包含正确的“returnUrl”参数,我也不会保留在同一页面上。
我做错了什么?
以下是代码段。我在调用RedirectFromLoginPage之后返回EmptyResult(),因为我真的不知道该怎么做(参见this related question)
using (var relayingParty = new OpenIdRelyingParty())
{
var response = relayingParty.GetResponse();
if (response == null)
{
// Stage 2: user submitting Identifier
var openId = Request.Form["openId"];
relayingParty.CreateRequest(openId).RedirectToProvider();
throw new Exception("Never gets here");
}
// Stage 3: OpenID Provider sending assertion response
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
var claimedIdentifier = response.ClaimedIdentifier;
var user = _userRepository.FindByOpenId(claimedIdentifier);
if (user != null)
{
// login
FormsAuthentication.RedirectFromLoginPage(user.Id.ToString(), false);
return new EmptyResult();
// TODO - https://stackoverflow.com/questions/1991710/understanding-redirections-in-asp-net-mvc
// throw new Exception("Should never get here");
}
...
答案 0 :(得分:0)
这是一个黑暗中的镜头,但我最近经历了登录重定向的一些奇怪,因为匿名用户没有我的脚本文件夹的权限。这导致redirecturl指向jquery脚本,因为这是用户尝试访问的最后一个地址而没有成功。