【发布时间】:2015-03-29 22:45:04
【问题描述】:
我有 Mvc5 项目,我正在使用 Owin。
我正在从OwinContext 获得身份验证,
private IAuthenticationManager AuthenticationManager
{
get
{
return HttpContext.GetOwinContext().Authentication;
}
}
AuthenticationManager 让用户登录。
private async Task SignInAsync(ApplicationUser user, bool isPersistent)
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
Session_Add(user);
}
这是我在 HomeController 中的调用。我正在尝试在facebook 回调后登录。
public ActionResult Index()
{
try
{
if (Request.QueryString["code"] != null)
{
string code = Request.QueryString["code"].ToString();
string state = "";
string type = "";
var fb = new FacebookController();
var me = fb.GetUserInfo(fb.GetAccessToken(code, state, type));
new AccountController().LookUserFromFacebook(me);
}
return View();
}
catch
{
return View();
}
}
当登录表单提交到AccountController 时,用户可以登录。但是如果我从另一个控制器调用SignInAsync 方法,HttpContext 总是返回 null。我认为,由于此调用不是请求,因此控制器不会创建上下文。
如果我打电话给SignInAsync,解决办法是什么。
谢谢。
【问题讨论】:
-
你能说明你是如何从另一个控制器调用
AccountController的SignInAsync方法的吗? -
你想在这里达到什么目的?
-
好的,我编辑。 @MonkeyCoder
-
我在 facebook 回调 @RajdeepDosanjh 后尝试登录
标签: c# .net asp.net-mvc-5 asp.net-identity owin