我正试着用OWIN来解决问题。我创建了两个MVC 5项目。一个使用Aspnet.Identity进行身份验证,另一个使用另一个空项目。
我在emptyp项目中添加了以下内容:
具有登录操作和相应视图的帐户控制器
Startup.cs和另一部分
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ApplicationCookie",
LoginPath = new PathString("/Account/Login")
});
}
}
我在Home控制器中使用两个项目中的[Authorize]属性修饰了About动作。
当我运行第一个项目并在登录前进入“关于”屏幕时,它会按预期重定向到登录操作。当我为第二个项目做同样的事情时,我得到一个“HTTP错误401.0 - 未经授权”而不是重定向。
任何想法会导致第二个人以这种方式行事吗?
答案 0 :(得分:8)
我创建了两个新的类似项目,并且能够重现您的错误。
在空白项目中,我必须安装Microsoft.Owin.Host.SystemWeb
(通过Nuget),一旦我这样做,我在Startup.cs类中遇到了一堆错误。结束了这个:
[assembly: OwinStartupAttribute(typeof(v2.Startup))]
namespace v2
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ApplicationCookie",
LoginPath = new PathString("/Account/Login")
});
}
}
}
最后,当我调用用[Authorize]
属性修饰的About()方法时,我现在能够点击/看到我的登录视图。
希望这有帮助! 文斯
答案 1 :(得分:8)
每ASP.NET MVC 5 Web.config: "FormsAuthenticationModule" or "FormsAuthentication"
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
</modules>
</system.webServer>
为了额外的安全性我留下了“拼写错误”处理程序(以防微软稍后更改它给我)
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
<remove name="FormsAuthentication" />
</modules>
</system.webServer>