2013-11-03 46 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) 

按預期工作。