ASP.NET ZERO 学习 —— (4) 开发手册之AccountController

Account Controller

AccountController 提供了登录,注册,忘记密码和邮箱验证的页面。

布局

账号管理页面的布局在 View/Account 文件夹下的 _Layout 视图文件中。

这里写图片描述

登录

AccountController的主视图是登录页:

这里写图片描述

第一个填写的是 租户名称,它只有将应用设置为多租户模式时才会被显示出来。数据库初始化时,为创建一个 default 的租户。若作为应用程序管理员登录,则不需要填写租户名称。

你可以使用 admin 用户及 123qwe 密码进行管理员登录。当你第一次登录的时候,你需要修改你的管理员密码,因为 123qwe 不是非常安全。

这里写图片描述

更改密码后将会跳转至 Angular 应用。

这里写图片描述

第三方登录

ASP.NET Zero提供第三方登录。如要启用它,需要修改web.config文件中的一下设置。

<add key="ExternalAuth.Facebook.IsEnabled" value="false" />
<add key="ExternalAuth.Facebook.AppId" value="" />
<add key="ExternalAuth.Facebook.AppSecret" value="" />

<add key="ExternalAuth.Twitter.IsEnabled" value="false" />
<add key="ExternalAuth.Twitter.ConsumerKey" value="" />
<add key="ExternalAuth.Twitter.ConsumerSecret" value="" />

<add key="ExternalAuth.Google.IsEnabled" value="false" />
<add key="ExternalAuth.Google.ClientId" value="" />
<add key="ExternalAuth.Google.ClientSecret" value="" />

你可以部分启用然后配置相应的第三方登录选项。当你获得第三方登录的 API Key 时,将其填充在 web.config对应的位置。启用后,在登录页像下图那样显示:

这里写图片描述

然后你可以点击相应的第三方图标登录你已有的账号。查看 Starup 类哪里使用了配置项,你可以添加更多的第三方登录选项。

            if (IsTrue("ExternalAuth.Facebook.IsEnabled"))
            {
                app.UseFacebookAuthentication(CreateFacebookAuthOptions());
            }

            if (IsTrue("ExternalAuth.Twitter.IsEnabled"))
            {
                app.UseTwitterAuthentication(CreateTwitterAuthOptions());
            }

            if (IsTrue("ExternalAuth.Google.IsEnabled"))
            {
                app.UseGoogleAuthentication(CreateGoogleAuthOptions());
            }

            if (IsTrue("ExternalAuth.WsFederation.IsEnabled"))
            {
                app.UseWsFederationAuthentication(CreateWsFederationAuthOptions());
            }

            if (IsTrue("ExternalAuth.OpenId.IsEnabled"))
            {
                app.UseOpenIdConnectAuthentication(CreateOpenIdOptions());
            }

OPENID 连接登录

除了第三方登录,ASP.NET Zero 也集成了Openid 连接登录。在web.config中进行配置

<add key="ExternalAuth.OpenId.IsEnabled" value="false" />
<add key="ExternalAuth.OpenId.Authority" value="" />
<add key="ExternalAuth.OpenId.ClientId" value="" />
<add key="ExternalAuth.OpenId.ClientSecret" value="" />

当启用后也会在登录页面上显示一个图标。

ADFS 登录

ADFS是另一个外部登录方式。为了配置ADFS登录,需要在web.config中进行配置。

<add key="ExternalAuth.WsFederation.IsEnabled" value="false" />
<add key="ExternalAuth.WsFederation.MetaDataAddress" value="" />
<add key="ExternalAuth.WsFederation.Wtrealm" value="" />

双因素认证登录

ASP.NET Zero已经提供了双因素认证登录,但是默认是禁用的。你可以在管理员设置页面里进行启用:

这里写图片描述

注意:在多租户应用里,只有在管理员设置中启用的情况下,才可以为租户提供双因素身份验证。另外,邮箱验证和短信验证设置仅在管理员界面中可用。

当它启用后,当用户输入用户名及密码后会被询问选择一种验证方式。

这里写图片描述

然后会让你输入发送给你的验证码。

这里写图片描述

邮箱验证

验证用户的邮箱是否可用。由于在调试模式下禁用电子邮件发送,您可以在日志中看到代码。在发布模式下,邮件将被发送。

短信验证

验证用户的手机号是否可用。请注意,短信发送没有完全实现,因为它需要集成一个SMS供应商。当前只是将安全代码写入日志。你可以完善 IdentitySmsMessageService 类来实现短信发送功能。否则,禁用短信验证功能。

用户锁定

如前面所示,你可以设置用户锁定的配置。当用户输入指定的次数和持续时间的错误密码时,将被锁定。

注册

当在登陆页面点击注册时,将会显示注册页面

如果是多租户模式,用户可以注册,成为一个租户的用户。如果是单租户模式,那么租户名称将不会被显示。

这里写图片描述

验证码(安全问题)是可选的。这里用的是Google的验证码服务,它为每一个域名单独提供服务。因此,要使它正常工作,你应该在https://www.google.com/recaptcha为您的域创建你自己的私人和公共密钥,并替换web.config文件中的配置项。

邮箱验证

当用户提交注册信息后,会通过邮件发送一个验证码至用户注册信息中填的邮箱地址。如果用户因为某些原因未能收到邮件,可以通过点击发送激活邮件重新发送邮箱验证码。

这里写图片描述

同样,如果是单租户模式,那么租户名称将不会被显示或者租户名通过子域名的方式得知(例如:tenancyname.mydomian.com)。

忘记密码

如果用户忘记了自己的密码,可以通过点击“忘记密码”链接,然后会发送一封邮件让你重设密码。

这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ASP.NET WebAPI 是一种基于 HTTP 协议的 RESTful 风格的 Web 服务框架,它可以用来创建和提供 Web 服务。在 WebAPI 中实现登录和注销功能,需要涉及到用户认证和授权的相关知识。 下面是一个简单的 ASP.NET WebAPI 登录和注销的示例: 1. 首先需要创建一个控制器,例如名为 `AccountController` 的控制器。 2. 在 `AccountController` 中添加一个 `Login` 方法,用于处理用户登录的逻辑。在这个方法中,可以使用 ASP.NET Identity 进行用户认证,例如: ```csharp [HttpPost] public async Task<IHttpActionResult> Login(LoginViewModel model) { var user = await UserManager.FindAsync(model.Username, model.Password); if (user == null) { return BadRequest("Invalid username or password."); } var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); Authentication.SignIn(new AuthenticationProperties { IsPersistent = model.RememberMe }, identity); return Ok(); } ``` 3. 在 `AccountController` 中添加一个 `Logout` 方法,用于处理用户注销的逻辑。在这个方法中,可以使用 ASP.NET Identity 进行用户注销,例如: ```csharp [HttpPost] public IHttpActionResult Logout() { Authentication.SignOut(DefaultAuthenticationTypes.ApplicationCookie); return Ok(); } ``` 4. 在 WebAPI 的配置文件 `WebApiConfig.cs` 中启用用户认证和授权: ```csharp public static void Register(HttpConfiguration config) { // 配置 Web API 路由 config.MapHttpAttributeRoutes(); // 启用用户认证和授权 config.Filters.Add(new AuthorizeAttribute()); // ... } ``` 以上就是一个简单的 ASP.NET WebAPI 登录和注销的示例。在实际开发中,还需要结合具体的业务逻辑进行完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值