0

这是我正在尝试做的事情:

首先,我正在创建一个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);

然后我尝试使用来自的SignIn方法IAuthenticationManagerOwinContext

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

一切正常,不会抛出任何异常,但是当我尝试使用Authorize属性访问一个简单的操作时,它不会让我看到页面,就好像我没有登录一样。

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

有关更多上下文,我在此处添加了完整代码:

为什么不登录?

4

1 回答 1

0

FacebookAuthenticationProviderOnAuthenticated发生在某些不同的上下文中,我无法使用此事件进行签名。

继续运行

public async Task<ActionResult> ExternalLoginCallback(string returnUrl)

按预期工作。

于 2013-11-03T21:16:50.860 回答