DotVVM身份验证

时间:2015-10-13 16:51:29

标签: c# asp.net authentication authorization dotvvm

我在dotVVM框架中遇到了Owin身份验证的问题。在需要进行身份验证的页面上授权后,我收到401错误。

这是我目前的startup.cs

var applicationPhysicalPath = HostingEnvironment.ApplicationPhysicalPath;

// use DotVVM
DotvvmConfiguration dotvvmConfiguration = app.UseDotVVM(applicationPhysicalPath);
dotvvmConfiguration.RouteTable.Add("Login", "", "Views/login.dothtml", null);
dotvvmConfiguration.RouteTable.Add("Home", "Home", "Views/home.dothtml", null);
dotvvmConfiguration.RouteTable.Add("Register", "Register", "Views/register.dothtml", null);

// use static files
app.UseStaticFiles(new StaticFileOptions()
{
    FileSystem = new PhysicalFileSystem(applicationPhysicalPath)
});

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie
});

HomeViewModel.cs

[Authorize]
public class HomeViewModel : DotvvmViewModelBase { }

我用这种方式创建了Auth Cookie

public void Login()
{
    var identity = LoginHelper.GetIdentity(Email, DataAccess.DbAccess.CreateHash(Password));
    if (identity == null)
        return;

    Context.OwinContext.Authentication.SignIn(new ClaimsIdentity(identity));
    Context.Redirect("Home");
}

1 个答案:

答案 0 :(得分:3)

OWIN中的注册顺序很重要。 app.UseCookieAuthentication应该是第一个注册的中间件。