我到达我的登录页面,参数“returnUrl”设置为我所在的URL。然后,我通过OpenID(DotNetOpenAuth)登录,并致电FormsAuthentication.RedirectFromLoginPage()
。登录成功,但是我没有返回到原来的页面。FormsAuthentication.RedirectFromLoginPage不会让我回到orignal URL
我在注销时遇到同样的问题 - 注销时,即使注销链接包含正确的“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");
}
...
你有任何可以发布的代码吗?它可能有帮助。 – griegs 2010-01-05 22:31:56
另外,你正在导向什么页面?我怀疑/ Home/Index,但请您确认。 – griegs 2010-01-05 22:47:33
我确实重定向到/ Home/Index。 – ripper234 2010-01-05 23:02:28