2

我正在使用 VS 2012 MVC4 (razor) 示例(几乎所有这些都是新的)并且我修改了 AuthConfig.cs 文件以允许 Google 和 Yahoo 的 OpenID 访问

        OAuthWebSecurity.RegisterGoogleClient();
        OAuthWebSecurity.RegisterYahooClient();

果然,提供了这两个 OpenID 选项。我想修改它,以便按钮显示适当的徽标。

DotNetOpenAuth 是否有返回图像路径的方法?我在想如果是这样,我可以修改 ExternalLogin“页面”。

@foreach (AuthenticationClientData p in Model)
{
        <button type="submit" name="provider" value="@p.AuthenticationClient.ProviderName"  title="Log in using your @p.DisplayName account"><img src="" />@p.DisplayName </button>            
}
4

3 回答 3

2

你可以这样做(对不起,它是 vb.net 代码):

在 AuthConfig RegisterAuth 方法中创建一个字典并将您的图标路径添加到所需的图像

Dim MsExtraData As New Dictionary(Of String, Object)
MsExtraData.Add("Icon", VirtualPathUtility.ToAbsolute("~/Images/Microsoft.png"))

' Then pass it as extraData parameter to the register client method
OAuthWebSecurity.RegisterMicrosoftClient(
        clientId:="yourkey",
        clientSecret:="yoursecret",
        displayName:="Microsoft",
        extraData:=MsExtraData)

现在转到 Views\Account 文件夹中的 _ExternalLoginsListPartial 查看并使用以下代码更改按钮生成代码:

<button type="submit" id="<%: p.DisplayName%>" name="provider" value="<%: p.AuthenticationClient.ProviderName%>" title="Login with <%: p.DisplayName %>"><%: p.DisplayName%>
            <img src="<%: p.ExtraData("Icon")%>" alt="Icon for <%: p.DisplayName%>" />
        </button>
于 2013-01-13T06:16:57.620 回答
0

听起来不错。Twitter 和 Facebook 签名需要一个额外的字段:displayName。

于 2013-03-13T18:26:40.540 回答
-1

我刚刚使用 font-awsome 在 _ExternalLoginsListPartials 视图上执行该任务,如下所示:

        using (Html.BeginForm(Model.Action, "Account", new { ReturnUrl = Model.ReturnUrl }))
        {
            @Html.AntiForgeryToken()
            <div id="socialLoginList">
                <p>
                @foreach (AuthenticationDescription p in loginProviders)
                {
                    <button type="submit" class="btn btn-default" id="@p.AuthenticationType" name="provider" value="@p.AuthenticationType" title="Log in using your @p.Caption account"><span class="fa fa-@p.Caption.ToLower()">&nbsp;&nbsp;</span>@p.AuthenticationType</button>
                }
                </p>
            </div>
        }

当然,前提是您使用的是 Font-Awsome,但我认为它也适用于其他字形图标。这也是 MVC5 和 VS2013,但我想它仍然适用于以前的 MVC 版本,因为我只使用 html、css 和 Razor。

希望有帮助!

于 2014-10-09T19:45:55.540 回答