1

这更像是一个设计问题。

我想出了如何通过 Facebook SDK c# 使用 facebook 登录。

问题:每次用户转到不同页面时,检查用户是否登录 FB 的最佳方法是什么?

回到 ASP.NET 网络表单,我可以简单地在母版页后面的代码中输入代码来检查 FB 登录状态。这很好......一次完成。但我不明白如何在 Asp.Net MVC 4.0 中实现类似的东西。

鉴于 _Layout.cshtml 文件(其作用类似于母版页)只是一个视图(因此,没有后面的代码),编写检查用户每次用户是否登录到 FB 的最佳方法是什么?到不同的网页?因为我认为,将这段代码添加到每个控制器中并不是最佳的设计解决方案。

我能想到的唯一解决方案是在客户端使用 Javascript 进行 WebApi 调用......我猜该脚本将与所有其他脚本捆绑在一起,以便它在每个页面上运行。但我希望在服务器端找到解决方案......

我对 MVC 很陌生,在学习过程中不断学习……提示赞赏……谢谢!

4

1 回答 1

0

我可以想到几点可能会帮助您设计解决方案。

  1. 可以将代码放入您的 _Layout 中,但我同意您要小心这样做。您可以创建一个助手或部分视图并让您的 _Layout 调用它,以便为每个操作执行它。您的助手/部分需要执行所需的逻辑,然后返回一些东西。我遇到的问题是每个请求都有很多开销。
  2. 您可以在页面加载后进行 AJAX 调用(如您所建议的那样)。这意味着页面仍然可以快速加载。我遇到的问题是您现在依赖于Javascript。它也可能有点hacky(?)
  3. 将用户的状态(登录/注销)存储在会话/cookie 中并提供 5 分钟到期怎么样?您可以使用之前的 Helper/Partial 方法,或者在 OnActionExecuting(或类似)中触发一些逻辑。您的逻辑应检查状态是否已过期,然后连接到 Facebook API 以更新状态。这具有开销低的优点(即直到 5 分钟过去后才再次检查)。

我不知道您的确切情况,所以我不能说哪种方法(如果有的话)是最好的。

于 2013-06-11T05:59:44.883 回答