无状态ASP.NET MVC 6应用程序中基于Cookie的身份验证

时间:2015-11-25 21:37:05

标签: asp.net asp.net-mvc cookies asp.net-core asp.net-core-mvc

我正在开发一个无状态(无数据库)的ASP.NET 5 / MVC 6应用程序,该应用程序使用相同的用户名/密码组合对 2 webservices 进行用户身份验证。用户通过基于OAuth2的REST API进行身份验证,accessToken需要以某种方式存储sessionId,同时针对需要以某种方式存储accessToken的soap服务对用户进行身份验证。

我想做什么:

  • 登录表格要求输入用户名/密码
  • 针对上述REST API和Soap服务进行身份验证
  • soapSessionIdreturnUrl存储在Cookie中以供日后重复使用。
  • 重定向到accessToken
  • 能够在请求中轻松检索soapSessionIdapp.UseCookieAuthentication(options => { options.AutomaticAuthentication = true; options.LoginPath = "/Home/Login"; });

我已经阅读了很多不同的内容,关于如何在ASP.NET 5 / MVC 6中为您完成大部分工作,但我不确定选择哪条路线。我见过这样的东西:

app.UseIdentity();

但我也看到了这个:

componentDidMount: function() {
    TodoStore.addChangeListener(this._onChange);
}

他们有关系吗?我应该使用哪一个?要明确:我不想在数据库中存储任何信息。我只想在cookie中持久化令牌并以符合ASP.NET 5 / MVC 6中最佳实践的方式处理登录(即,不要手动执行任何框架可以解决的问题)

1 个答案:

答案 0 :(得分:0)

  

它们有关系吗?

是的,从某种意义上讲,它们是相关的。因为app.UseIdentity();内部调用app.UseCookieAuthentication()。您可以在source code on GitHub

中看到
  

我不想在数据库中存储任何信息。

使用Identity不会强制您将数据库用于存储数据,但您必须执行某些步骤以在ConfigureServices方法中进行设置。

通常,出于您的目的,您无需使用app.UseIdentity()