2016-09-13 4 views
0

Попытка настроить настройки и настроить вход в систему с помощью Google, используя Microsoft.Owin.Security.Google в моем ASP.NET MVC 4 проекта с Visual Studio 2012.Как настроить Microsoft.Owin.Security.Google для ASP.NET MVC 4 в Visual Studio 2012?

Я следовал этой статье: http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on и проверяемого другие также, и все они относятся к размещению кода в файле Startup.cs, который не имеет шаблона ASP.NET MVC 4.

Является ли библиотека Microsoft Owin доступной только для ASP.NET MVC 5?

ответ

0

Да, это намного проще сделать это с помощью ASP.NET MVC5:

в app_start/Startup.Auth.cs

using Microsoft.Owin.Security.Cookies; 
using Microsoft.Owin.Security.Google; 
using Microsoft.Owin.Security.Facebook; 
using Owin; 
using System.Web.Helpers; 
using System.Security.Claims; 
using System.Threading.Tasks; 
using Microsoft.Owin.Security; 

namespace ui.web 
{ 
    public partial class Startup 
    { 
     public void ConfigureAuth(IAppBuilder app) 
     { 

      /* Local logins */ 
      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/login") 
      }); 

      app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 

      /* Google */ 
      var googleOptions = new GoogleOAuth2AuthenticationOptions 
      { 
       ClientId = "clientid", 
       ClientSecret = "secret", 
      }; 
      googleOptions.Scope.Add("https://www.googleapis.com/auth/userinfo.profile"); 
      googleOptions.Scope.Add("https://www.googleapis.com/auth/userinfo.email"); 
      app.UseGoogleAuthentication(googleOptions); 

      /* Facebook */ 
      var facebookOptions = new FacebookAuthenticationOptions 
      { 
       AppId = "clientid", 
       AppSecret = "secret", 
       BackchannelHttpHandler = new FacebookBackChannelHandler(), 
       UserInformationEndpoint = "https://graph.facebook.com/v2.4/me?fields=id,name,email,first_name,last_name,location", 
      }; 

      facebookOptions.Scope.Add("email"); 
      app.UseFacebookAuthentication(facebookOptions); 

      AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier; 
     } 
} 
} 

FacebookBackChannelHandler

using System; 
using System.Net.Http; 

namespace ui.web.infrastructure.auth 
{ 
    public class FacebookBackChannelHandler : HttpClientHandler 
    { 
     protected override async System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) 
     { 
      // Replace the RequestUri so it's not malformed 
      if (!request.RequestUri.AbsolutePath.Contains("/oauth")) 
      { 
       request.RequestUri = new Uri(request.RequestUri.AbsoluteUri.Replace("?access_token", "&access_token")); 
      } 

      return await base.SendAsync(request, cancellationToken); 
     } 
    } 
} 
+0

I не видел startup.cs в моем проекте, что мне делать, чтобы заставить его работать в MVC5 – Adrian