Приложение Facebook ASP.NET MVC с несколькими контроллерами - PullRequest
1 голос
/ 19 декабря 2010

Я использую Facebook C # SDK для разработки приложения iframe для Facebook.

Я посмотрел пример и нашел этот фрагмент кода для авторизации в контроллере:

namespace Auth_And_Allow.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        [CanvasAuthorize(Perms = "user_about_me")]
        public ActionResult Index()
        {
            FacebookApp fbApp = new FacebookApp();
            if (fbApp.Session != null)
            {
                dynamic result = fbApp.Get("me");

                ViewData["Firstname"] = result.first_name;
                ViewData["Lastname"] = result.last_name;
            }

            return View();
        }
    }
}

Но что мне делать, если мое приложение использует более одного контроллера?

Должен ли я использовать один и тот же код авторизации на всех контроллерах или есть другой способ?(Я знаю, что так будет работать, но сейчас я ищу лучшие практики для создания приложений для Facebook)

1 Ответ

1 голос
/ 20 декабря 2010

Атрибут CanvasAuthorize гарантирует, что ваш пользователь вошел в систему и имеет соответствующие разрешения.Вам не нужно проверять это снова, проверяя, является ли Session пустым.Кроме того, атрибут CanvasAuthorize (как и обычный атрибут Authorize) может быть применен как к вашим контролерам, так и к вашим действиям.Я бы просто сделал что-то вроде этого:

[CanvasAuthorize(Perms = "user_about_me")]
public class FirstController : Controller {


}

[CanvasAuthorize(Perms = "user_about_me")]
public class SecondController : Controller {

}

Убедитесь, что вы используете расширения контроллера с именем CanvasRedirect, к которым обращается this.CanvasRedirect, внутри контроллера с указанным пространством имен Facebook.Web.Mvc.Эти помощники по перенаправлению гарантируют, что вы перенаправите правильно и не потеряете сеанс пользователя.

...