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="" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
你可以部分啓用然後配置相應的第三方登錄選項。當你獲得第三方登錄的 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());
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
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="" />
- 1
- 2
- 3
- 4
當啓用後也會在登錄頁面上顯示一個圖標。
ADFS 登錄
ADFS是另一個外部登錄方式。爲了配置ADFS登錄,需要在web.config中進行配置。
<add key="ExternalAuth.WsFederation.IsEnabled" value="false" />
<add key="ExternalAuth.WsFederation.MetaDataAddress" value="" />
<add key="ExternalAuth.WsFederation.Wtrealm" value="" />
- 1
- 2
- 3
雙因素認證登錄
ASP.NET Zero已經提供了雙因素認證登錄,但是默認是禁用的。你可以在管理員設置頁面裏進行啓用:
注意:在多租戶應用裏,只有在管理員設置中啓用的情況下,纔可以爲租戶提供雙因素身份驗證。另外,郵箱驗證和短信驗證設置僅在管理員界面中可用。
當它啓用後,當用戶輸入用戶名及密碼後會被詢問選擇一種驗證方式。
然後會讓你輸入發送給你的驗證碼。
郵箱驗證
驗證用戶的郵箱是否可用。由於在調試模式下禁用電子郵件發送,您可以在日誌中看到代碼。在發佈模式下,郵件將被髮送。
短信驗證
驗證用戶的手機號是否可用。請注意,短信發送沒有完全實現,因爲它需要集成一個SMS供應商。當前只是將安全代碼寫入日誌。你可以完善 IdentitySmsMessageService 類來實現短信發送功能。否則,禁用短信驗證功能。
用戶鎖定
如前面所示,你可以設置用戶鎖定的配置。當用戶輸入指定的次數和持續時間的錯誤密碼時,將被鎖定。
註冊
當在登陸頁面點擊註冊時,將會顯示註冊頁面
如果是多租戶模式,用戶可以註冊,成爲一個租戶的用戶。如果是單租戶模式,那麼租戶名稱將不會被顯示。
驗證碼(安全問題)是可選的。這裏用的是Google的驗證碼服務,它爲每一個域名單獨提供服務。因此,要使它正常工作,你應該在https://www.google.com/recaptcha爲您的域創建你自己的私人和公共密鑰,並替換web.config文件中的配置項。
郵箱驗證
當用戶提交註冊信息後,會通過郵件發送一個驗證碼至用戶註冊信息中填的郵箱地址。如果用戶因爲某些原因未能收到郵件,可以通過點擊發送激活郵件重新發送郵箱驗證碼。
同樣,如果是單租戶模式,那麼租戶名稱將不會被顯示或者租戶名通過子域名的方式得知(例如:tenancyname.mydomian.com)。
忘記密碼
如果用戶忘記了自己的密碼,可以通過點擊“忘記密碼”鏈接,然後會發送一封郵件讓你重設密碼。