我正在尝试通过ASP.NET MVC中的表单身份验证使用Facebook进行用户授权。
我从Facebook和用户头像网址获取访问令牌并将这些数据传递给Controller,所有这些工作都很好,直到我需要重定向用户的那一刻。
我之前尝试过FormsAuthentication.RedirectFromLoginPage
,RedirectToAction
,Response.Redict
。这些方法都没有工作,也没有错误。
这是控制器:
[HttpPost]
public ActionResult Login(string Url, string AccessToken)
{
string username;
string fullname;
var client = new Facebook.FacebookClient(AccessToken);
dynamic result = client.Get("me", new { fields = "username,first_name,last_name" });
if (result.first_name == null | result.last_name == null)
{
username = result.username;
fullname = null;
}
else
{
username = result.username;
fullname = result.first_name + " " + result.last_name;
}
if (UserExist(username) == false)
{
CreateUser(username, Url, fullname);
//FormsAuthentication.SetAuthCookie(username, true);
//return RedirectToAction("Register", "Home");
FormsAuthentication.RedirectFromLoginPage(username, true);
}
else
{
HttpCookie c = Request.Cookies.Get("UserGuid");
if (c == null)
{
c = new HttpCookie("UserGuid")
{
Value = GetUserGuid(User.Identity.Name),
Expires = DateTime.Now.AddYears(1)
};
Response.Cookies.Add(c);
}
if (result.first_name == null || result.last_name == null)
{
username = result.username;
}
else
{
username = result.first_name + " " + result.last_name;
}
try
{
//FormsAuthentication.SetAuthCookie(username, true);
//Response.Redirect(FormsAuthentication.DefaultUrl);
FormsAuthentication.RedirectFromLoginPage(username, true);
}
catch (Exception)
{
throw new Exception();
}
}
return View();
}
答案 0 :(得分:1)
通过AJAX访问操作方法时,无法进行简单的重定向。您需要通过控制器操作提供响应URL来在JS代码中进行重定向。
您只需从控制器返回重定向网址,然后在JS中执行以下操作:
$.ajax({
url: url,
data: data,
success: function(resp) {
window.location.href = resp.Url;
}
})
在你的控制器中:
return Json(new {Url = "/Home/Index"});