2KB项目,专业的源码交易网站 帮助 收藏 每日签到

ASP.NET MVC 4 运用 OAuth

  • 时间:2019-03-30 22:08 编辑:2KB 来源:2KB.COM 阅读:458
  • 扫一扫,手机访问
  • 分享
摘要:
ASP.NET MVC OAuth 英文原文:Using OAuth Providers with MVC 4

这个教程向你展现了怎么创立一个ASP.NET MVC 4的web使用,能让用户用内部供给方的证书(比方Facebook, Twitter, Microsoft,或Google)登岸,然后将源自那些供给方的一些功用集成进你的web使用。为容易起见,本教程首要讲述与Facebook的证书一同任务。

在你的web使用中启用这些证书供给了一个主要的优势,由于数百万用户曾经有这些内部供给方的帐号。假如不是必需创立而且记着一组新的证书,这些用户可能更偏向于注册你的网站。并且当一个用户经过某一个供给方登岸当前,你可以引入供给方的社会化举措。

你将需求构建的

本指南首要有两个目的:

  1. 运用户可以经过开放受权办事者供给的根据登录
  2. 从第三方获得账号信息并经过在你的站点上完美账户信息

固然本文的例子只演示了将facebook作为受权办事供给者,可是你可以修正代码去运用恣意一个第三方的办事供给者.那些完成的步调汇合你在本文中看到的十分相似.你只要在间接挪用第三方供给的API聚集时才会发明一些明显的差别.

其它翻译版本 (1) 加载中

先决前提

并且,本文假定你具有ASP.NET MVC与Visual Studio的根底常识。假如你需求一个ASP.NET MVC 4的引见, 请看 ASP.NET MVC 4引见.

创立工程

在Visual Studio里创立一个新的 ASP.NET MVC 4 Web Application,定名它为 "OAuthMVC"。你可以选择目的为.NET Framework 4.5 或 4中恣意一个。

create project

在 New ASP.NET MVC 4 Project 窗口, 选择 Internet Application 并保存 Razor 作为视图引擎。

select Internet Application

启用一个供给者

当你用Internet Application模板创立出一个MVC 4 web application时,这个工程在App_Start目次创立了一个名为AuthConfig.cs的文件。

AuthConfig file

AuthConfig文件包括了针对内部证书供给方的客户注册代码。默许状况下,这些代码被注释掉了,所以没有内部供给者被启用。

public static class AuthConfig
{
    public static void RegisterAuth()
    {
        // To let users of this site log in using their accounts from other sites such as Microsoft, Facebook, and Twitter,
        // you must update this site. For more information visit http://go.microsoft.com/fwlink/?LinkID=252166

        //OAuthWebSecurity.RegisterMicrosoftClient(
        //    clientId: "",
        //    clientSecret: "");

        //OAuthWebSecurity.RegisterTwitterClient(
        //    consumerKey: "",
        //    consumerSecret: "");

        //OAuthWebSecurity.RegisterFacebookClient(
        //    appId: "",
        //    appSecret: "");

        //OAuthWebSecurity.RegisterGoogleClient();
    }
}

你必需反注册这些代码,以便运用内部的客户证书。你只需反注册你想归入你的网站的供给方。对本教程,你只需启用Facebook证书。

public static class AuthConfig
{
    public static void RegisterAuth()
    {
        //OAuthWebSecurity.RegisterMicrosoftClient(
        //    clientId: "",
        //    clientSecret: "");

        //OAuthWebSecurity.RegisterTwitterClient(
        //    consumerKey: "",
        //    consumerSecret: "");

        OAuthWebSecurity.RegisterFacebookClient(
            appId: "",
            appSecret: "");

        //OAuthWebSecurity.RegisterGoogleClient();        
    }
}

留意上面的例子,办法包括了注册参数的空字符串。假如你想如今运转这个使用,使用会抛出一个参数异常,由于这个参数不答应空字符串。为了给出正当的值,你必需像下一节显示的那样,在内部供给方注册你的网站。


在内部供给方注册

要经过来自内部供给方的证书判定用户,你必需在供给方注册你的网站。当你注册你的网站时,你将会收到一些参数(比方key或id,和暗码),以便注册客户时包括出来。你必需在你想运用的供给方有一个帐号。

本教程没有出现出在这些供给方实行注册的一切必需的操作步调。这些步调凡是是不难的。为了胜利的注册你的网站,依照那些网站供给的唆使去做。要Start注册你的网站,看看这些开发者网站:

在Facebook注册你的网站时,你可以规则"localhost"为网站域名,"http://localhost/"为网址,像下面图片显示的那样。运用localhost对大大多数供给方有效,但今朝对Microsoft供给方无效。对Microsoft供给方,你必需包括一个正当的web网站地址。

register site

在后面的图片中,app id,app secret 和contact email的值被剔除。当你真正注册你的网站时,那些值将会浮现。你要留意app id 和app secret的值,由于你将会把它们加到你的使用,

创立测试用户

假如你不介怀运用一个已存在的Facebook帐号来测试你的网站,你可以跳过本节。

你能很轻易的在Facebook app治理页面中,为你的使用创立测试用户。你能用这些测试帐号登录你的网站。创立测试用户要点击右边导航格子的Roles链接,并点击Create链接。

create test users

Facebook网站主动创立你请求的数量的测试帐号。

给使用添加来自供给方的id与secret

如今你收到了来自Facebook的id和secret,回到AuthConfig文件把它们作为参数值增加出来。下面显示的数值不是真实的数值。

public static class AuthConfig
{
    public static void RegisterAuth()
    {
        //OAuthWebSecurity.RegisterMicrosoftClient(
        //    clientId: "",
        //    clientSecret: "");

        //OAuthWebSecurity.RegisterTwitterClient(
        //    consumerKey: "",
        //    consumerSecret: "");

        OAuthWebSecurity.RegisterFacebookClient(
            appId: "111111111111111",
            appSecret: "a1a1aa111111111a111a111aaa111111");

        //OAuthWebSecurity.RegisterGoogleClient();
    }
}


用内部证书登录

那就是在你的网站启用内部证书全体要做的。运转你的使用点击右上角的login链接。模版主动辨认出你注册了Facebook作为供给方,并为这个供给方包括了一个按钮。假如你注册了多个供给方,一个按钮对应一个会主动包含出去。

external login

本教程没有掩盖如何为内部供给方客制化登录按钮。需求那些信息,可以看运用OAuth/OpenID时客制化登录界面。

点击Facebook按钮以Facebook证书登录。当你选择了内部供给方的一个,你将被重定向到阿谁网站,并在其办事提醒下登录。

下图显示了Facebook的登录界面。它标明你在用名为oauthmvcexample的Facebook帐号登录一个网站。

facebook authentication

用Facebook证书登录当前,一个页面通知用户这个网站将拜访其根本的信息。

request permission

选择 Go to App当前, 用户必需在该网站注册。下图显示了一个用户用Facebook证书登录当前的注册页面。用户名被典范的用一个来自供给方的名字预填充。

register

点击 Register 完成注册。封闭阅读器。

你可以看到新的帐号曾经被加到你的数据库。在Server Explorer里,翻开DefaultConnection数据库并翻开Tables目次。

database tables

右击 UserProfile 表选择 Show Table Data

show data

你将看到你增加的新帐号。看看webpage_OAuthMembership表中的数据。你会看到为你刚增加的帐号,有关内部供给方的的更大多数据。

假如你只是想启用内部鉴权,你曾经完成了。但是你可以进一步未来自供给方的信息集成进新用户注册进程,就像下面几节显示的那样。

为附加的用户信息创立模子

正如你在后面几节留意到的,你不需求取得任何附加的信息来使内建的注册去任务。可是,大大多数供给方前往了关于用户的附加信息。下面几节显示了如何保存该信息并将它存入数据库。特殊的,你将保存这些值,用户的全名,用户个人主页的URI,和标明Facebook能否验证了该帐号的一个值。

你将运用代码起首迁徙来增加一个表,以便存储附加用户信息。你在增加表到已存在的数据库,因而起首你需求创立一个以后数据库的快照。经过创立以后数据库的快照,你可以当前创立一个仅包括新加表的迁徙。要创立以后数据库快照:

  1. 翻开 Package Manager Console
  2. 运转号令 enable-migrations
  3. 运转号令 add-migration initial –IgnoreChanges
  4. 运转号令 update-database


如今你要增加新的属性。在Models目次,翻开AccountModels.cs文件,找到RegisterExternalLoginModel类。RegisterExternalLoginModel类持有由鉴权供给方前往的数值。增加名为FullName 与 Link的属性,像下面凸起的那样。

public class RegisterExternalLoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    public string ExternalLoginData { get; set; }

    [Display(Name = "Full name")]
    public string FullName { get; set; }

    [Display(Name = "Personal page link")]
    public string Link { get; set; }
}

异样在AccountModels.cs, 增加一个名为ExtraUserInformation的新类。这个类代表了将在数据库创立的新表。

[Table("ExtraUserInformation")]
public class ExternalUserInformation
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public string FullName { get; set; }
    public string Link { get; set; }
    public bool? Verified { get; set; }
}

在UsersContext类里,增加下面凸起的代码,为新类创立一个DbSet属性。

public class UsersContext : DbContext
{
    public UsersContext()
        : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
    public DbSet<ExternalUserInformation> ExternalUsers { get; set; }
}

如今你预备好创立新表了。再次翻开 Package Manager Console,此次:

  1. 运转号令 add-migration AddExtraUserInformation
  2. 运转号令 update-database

新表示在在数据库呈现了。

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部