【问题标题】:Authenticate a user in an ASP.NET MVC web application by calling an external ASP.NET Web Api service通过调用外部 ASP.NET Web Api 服务在 ASP.NET MVC Web 应用程序中对用户进行身份验证
【发布时间】:2014-10-02 21:45:44
【问题描述】:

我正计划使用 ASP.NET Web Api 制作一个宁静的 Web 服务。许多 ASP.NET MVC Web 应用程序和可能的本机应用程序将使用该服务。该服务将使用 ASP.NET 身份来授权请求​​/用户。通过在每个请求中传递一个令牌,我可以看到如何将服务与本机应用程序一起使用。

我的问题是任何使用该服务的 ASP.NET MVC 应用程序,我如何在向该服务发出请求后将用户标记为已登录?

这是我想要的,可以吗?

  • 用户未登录,重定向到登录页面
  • 用户提交表单,在应用中调用 MVC 控制器
  • 控制器调用 Web 服务
  • Web 服务返回用户的 ID、名称和角色(可能是 JSON?)
  • 这是我卡住的地方:ASP.NET MVC Web 应用程序然后将用户标记为已登录整个 MVC Web 应用程序。该角色将用于任何控制器/操作的任何授权属性。 ASP.NET MVC Web 应用还可以通过 cookie 记住用户并在未来自动登录。

【问题讨论】:

  • 没什么大不了的,但它是 ASP.NET MVC,而不是 ASP MVC。
  • 谢谢,我已经更正了
  • 我认为您正在做的事情是可能的。当 MVC 应用程序从 webapi 调用中获得肯定/肯定响应时,然后在 MVC 应用程序的控制器操作中设置一个 cookie。但是您可能需要考虑取消 cookie 并在 webapi 端设置一些东西,比如生成的令牌,然后在 MVC 应用程序上的每个请求上使用这个令牌来检查授权。有点像单点登录解决方案的先驱。

标签: asp.net asp.net-mvc web-services asp.net-web-api


【解决方案1】:

设置你只需要的cookie:

FormsAuthentication.SetAuthCookie(USERNAME, true /*rememberMe*/);

这解决了您的身份验证问题。授权——确定用户能做什么和不能做什么——是另一回事。您需要缓存用户在某处的角色并根据需要检查它们。

【讨论】:

    猜你喜欢
    • 2010-11-08
    • 2017-03-03
    • 2018-03-19
    • 1970-01-01
    • 2013-11-14
    • 2014-07-17
    • 2017-09-28
    • 1970-01-01
    • 2017-03-15
    相关资源
    最近更新 更多