僑光科技大學 資訊科技系
2021/02/22 ~ 2021/6/25
授課老師:高吉隆
電子信箱:kevinkao888@gmail.com
課程大綱
public string UserTitle { get; set; }
<div class="form-group"> <asp:Label runat="server" AssociatedControlID="UserTitle" CssClass="col-md-2 control-label">使用者名稱</asp:Label> <div class="col-md-10"> <asp:TextBox runat="server" ID="UserTitle" CssClass="form-control" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="UserTitle" CssClass="text-danger" ErrorMessage="必須填寫使用者名稱欄位。" /> </div> </div>
var user = new ApplicationUser() { UserName = Email.Text, Email = Email.Text, UserTitle = UserTitle.Text };
PM> Enable-Migrations
Code First 移轉已為專案 720VIP 啟用。
PM> Add-Migration "newfields"
正在為移轉 'newfields' 建立結構。
這個移轉檔案的設計工具程式碼包括目前 Code First 模型的快照。這個快照是用於為下一個移轉建立結構時計算模型的變更。如果您對模型進行其他變更,而且想將變更包含在這個移轉中,只要再次執行 'Add-Migration newfields' 就能重新建立結構。
PM> Update-Database
指定 '-Verbose' 旗標,可檢視要套用至目標資料庫的 SQL 陳述式。
正在套用明確移轉: [202102031537475_newfields]。
正在套用明確移轉: 202102031537475_newfields。
正在執行 Seed 方法。
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() { ClientId = "000-xoxo.apps.googleusercontent.com", ClientSecret = "oxoxoxoxoxoxoxoxo" });
輸入應用程式名稱及信箱 | 確定非機器人操作 |
---|---|
![]() |
![]() |
https://localhost:44300/signin-facebook
app.UseFacebookAuthentication( appId: "000000000000", appSecret: "oxoxoxoxoxox");
<appSettings> <add key="emailServiceUserName" value="username@gmail.com" /> </appSettings> <system.net> <mailSettings> <smtp from="username@gmail.com" deliveryMethod="Network"> <network host="smtp.gmail.com" password="1234567890123456" port="587" userName="username@gmail.com" enableSsl="true" /> </smtp> </mailSettings> </system.net>
public async Task SendAsync(IdentityMessage message) { await configSendGridasync(message); // return Task.FromResult(0); } private async Task configSendGridasync(IdentityMessage message) { MailMessage mailMessage = new MailMessage(ConfigurationManager.AppSettings["emailServiceUserName"], message.Destination); mailMessage.Subject = message.Subject; mailMessage.IsBodyHtml = true; mailMessage.Body = message.Body; SmtpClient client = new SmtpClient(); client.SendCompleted += (s, e) => { client.Dispose(); }; await client.SendMailAsync(mailMessage); }
if (result.Succeeded) { string code = manager.GenerateEmailConfirmationToken(user.Id); string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request); manager.SendEmail(user.Id, "確認您的帳戶", "請按一下此連結確認您的帳戶 <a href=\"" + callbackUrl + "\">這裏</a>."); if (user.EmailConfirmed) { signInManager.SignIn(user, isPersistent: false, rememberBrowser: false); IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); } else { ErrorMessage.Text = "信件已經寄至你的信箱。請收信而且確認你的帳號並完成註冊程序。"; } } else { ErrorMessage.Text = result.Errors.FirstOrDefault(); }
if (IsValid) { var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>(); var user = manager.FindByName(Email.Text); if (user != null) { if (!user.EmailConfirmed) { FailureText.Text = "無效的登入嘗試。你必需有一個已驗證過信箱的帳號。"; ErrorMessage.Visible = true; // 若需重送確認信,可以手動顯示 // ResendConfirm.Visible = true; } else { var result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false); switch (result) { // 其中幾行不變 } } } }
收到認證信 | 認證成功 |
---|---|
![]() |
![]() |
1.登入時出現按鈕 | 2.忘記密碼畫面 |
---|---|
![]() |
![]() |
string code = manager.GeneratePasswordResetToken(user.Id); string callbackUrl = IdentityHelper.GetResetPasswordRedirectUrl(code, Request); manager.SendEmail(user.Id, "重設密碼", "請按 <a href=\"" + callbackUrl + "\">這裏</a> 重設密碼.");
<%-- 一旦您的帳戶確認啟用了密碼重設功能請加以啟用 --%> <asp:HyperLink runat="server" ID="ForgotPasswordHyperLink" ViewStateMode="Disabled">忘記密碼?</asp:HyperLink>
// 一旦您啟用了帳戶確認以使用密碼重設功能,則會啟動此項目 ForgotPasswordHyperLink.NavigateUrl = "Forgot";
protected void SendEmailConfirmationToken(object sender, EventArgs e) { var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); var user = manager.FindByName(Email.Text); if (user != null) { if (!user.EmailConfirmed) { string code = manager.GenerateEmailConfirmationToken(user.Id); string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request); manager.SendEmail(user.Id, "確認您的帳戶", "請按一下此連結確認您的帳戶 <a href=\"" + callbackUrl + "\">這裏</a>."); FailureText.Text = "信件已經寄至你的信箱。請收信而且確認你的帳號並完成註冊程序。"; ErrorMessage.Visible = true; ResendConfirm.Visible = false; } } }
// 若需重送確認信,可以手動顯示 ResendConfirm.Visible = true;
<div class="form-group"> <div class="col-md-offset-2 col-md-10"> <asp:Button runat="server" OnClick="LogIn" Text="登入" CssClass="btn btn-default" /> <asp:Button runat="server" ID="ResendConfirm" OnClick="SendEmailConfirmationToken" Text="重送驗證信" Visible="false" CssClass="btn btn-default" /> </div> </div>
1.重設密碼信件之回應 | 2.寄出重設密碼信件 |
---|---|
![]() |
![]() |
1.顯示所有檔案 | 2.選擇檔案加入至專案 |
---|---|
![]() |
![]() |