使用导航栏中的Google帐户登录

时间:2017-03-14 03:06:55

标签: asp.net asp.net-mvc asp.net-identity

我使用Identity使用默认模板ASP.NET MVC 5项目。我已成功将Google Oauth链接到我的应用程序并且我能够登录,但我尝试修改navbar以从/Account/Login替换登录链接以登录Google直接来自第一个主页中的navbar

我当前的_LoginPartial.cshtml

ul class="nav navbar-nav navbar-right">
  @*  <li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>*@
    <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
</ul>

我该怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:0)

创建一个名为_ExternalLogIn.cshtml的新局部视图。在_LogInPartial.cshtml中,只需在此问题中注释您在上面编写的代码,并像这样调用部分视图,

<ul class="nav navbar-nav navbar-right">
   @Html.Partial("_ExternalLogIn",new ExternalLoginListViewModel())
</ul>

在这里看到您可能会收到ExternalLoginListViewModel()的错误。因此,您需要在页面顶部添加引用,如下所示,

@using MyProject.Web.Models

然后在你的_ExternalLogIn局部视图中写这样的,

@model MyProject.Web.Models.ExternalLoginListViewModel
@using Microsoft.Owin.Security
@{
var loginProviders = 
Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes();
if (loginProviders.Count() != 0)
{
    using (Html.BeginForm("ExternalLogin", "Account", new { ReturnUrl = 
    Model.ReturnUrl }))
    {
        @Html.AntiForgeryToken()
        foreach (AuthenticationDescription provider in loginProviders)
        {
            if (provider.AuthenticationType == "Facebook")
            {
             <li>
              <div class="form-group">
               <button type="submit" class="btn btn-block btn-social  
                 btn-gplus" name="provider"  
                  id="@provider.AuthenticationType" 
                   value="@provider.AuthenticationType" 
                     style="width:100%;text-align:left;border-
                      radius:0px;color:white">                              
                </button>
                </div>
              </li>
            }
        }

根据您的要求更改css。欢呼声。