2013-11-03 69 views
0

这里就是我想要做:如何使用Owin登录Facebook?

首先我创建一个UserManager

var userManager = new UserManager<IdentityUser>(new CustomUserStore()); 

由于任何用户是有效的,我创建了一个CustomUserStore,改变了FindById方法

public class CustomUserStore : UserStore<IdentityUser> 
{ 
    public override Task<IdentityUser> FindByIdAsync(string userId) 
    { 
     return Task.Run<IdentityUser>(() => 
     { 
      return new IdentityUser 
      { 
       Id = userId, 
       UserName = userId 
      }; 
     }); 
    } 
} 

然后我试图创建一个身份证

var user = new IdentityUser("anyusername"); 
var identity = userManager.CreateIdentity(
        user, 
        DefaultAuthenticationTypes.ApplicationCookie); 

然后我试图使用从IAuthenticationManagerSignIn方法OwinContext

HttpContext.Current.GetOwinContext().Authentication.SignIn(
    new AuthenticationProperties 
    { 
     IsPersistent = true 
    }, identity); 

一切正常,没有抛出任何异常,但是当我尝试Authorize属性来访问一个简单的动作,它不会让我看到了第页,好像我没有登录

[Authorize] 
public ActionResult Index() 
{ 
    return View(); 
} 

更多情况下,我已经添加了完整的代码在这里:

为什么不能登录?

回答

0

FacebookAuthenticationProvider的OnAuthenticated发生在一些不同的情况下,我不能Sigin这个事件。

运行在

public async Task<ActionResult> ExternalLoginCallback(string returnUrl) 

按预期工作。