2014-05-19 13 views
6

Tôi đã cố gắng triển khai đăng nhập bên ngoài bằng OWIN trong ứng dụng MVC5 bằng tài khoản google.GetExternalLoginInfoAsync null với OWIN trong ExternalLoginCallback trừ khi đã đăng nhập vào google

Nếu tôi đã đăng nhập vào google, nhấp vào nút google trong ứng dụng của tôi là tốt và nó sẽ đưa tôi đến trang đăng ký của mình sau khi cho phép tôi truy cập vào thông tin đăng nhập.

Nếu tôi chưa đăng nhập vào google khi tôi nhấp vào nút google của ứng dụng, tôi được nhắc đăng nhập với Google như mong đợi nhưng người nhận cuộc gọi lại dường như không thấy rằng tôi đã đăng nhập bằng logininfo là luôn luôn rỗng trong trường hợp này trong gọi lại như sau ...

[AllowAnonymous] 
    public async Task<ActionResult> ExternalLoginCallback(string returnUrl) 
    { 
     var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); 

     if (loginInfo == null) 
     { 
      return RedirectToAction("Login"); 
     } 

     // Code omitted for brevity. 
     } 
    } 

Có ai có giải pháp hay giải thích? Nó gần giống như cookie bên ngoài không được cung cấp cho OWIN cho đến khi yêu cầu sau khi đăng nhập vào google.

+0

thể trùng lặp của [OWIN trả về Null allways trong MVC5 ứng dụng cho Google hoặc facebook] (http://stackoverflow.com/questions/19775321/owin-returns-null -allways-in-mvc5-application-for-google-or-facebook) –

Trả lời

7

Sau nhiều ngày điều tra, tôi cuối cùng đã tìm ra câu trả lời. Vấn đề có vẻ là sau khi đăng nhập vào google, nó chuyển hướng trở lại trang web và không có quyền đăng nhập-google để chuyển hướng trở lại trang đăng nhập. Không chắc chắn lý do tại sao điều này hoạt động nếu đã đăng nhập vào google mặc dù. Tôi phát hiện này sau khi tìm thấy bài viết ...

http://blog.technovert.com/2014/01/google-openid-integration-issues-asp-net-identity/

tôi đã thêm dòng sau vào tập tin cấu hình của tôi.

<location path="signin-google"> 
<system.web> 
    <authorization> 
    <allow users="*" /> 
    </authorization> 
</system.web> 
</location> 

Nó hiện đang làm việc ...

+0

Nếu đã đăng nhập vào Google, bạn có thể tránh hoàn toàn việc gọi lại đăng nhập bên ngoài và chỉ cần được chuyển hướng đến ứng dụng. Gọi lại là chuyển hướng từ việc gọi API xác thực. –

+1

Điều này thực sự là không liên quan; OWIN xử lý URL này cho bạn bên ngoài câu trả lời ở đây đang cố định cấu hình. Xem câu trả lời của tôi về câu hỏi này, đây là bản dupe của: http://stackoverflow.com/a/29921451/176877 –

+0

Điều này rất có thể là do xác thực cửa sổ được bật, điều này không nên cho ứng dụng MVC bằng cách sử dụng xác thực google . –

Các vấn đề liên quan