一、Getting Start
-
英文文档
Getting Start。 -
中文文档
翻译文档。
二、配置
- 10分钟入门配置
- Startup.cs:配置服务、路由策略、依赖注入、权限认证等...
三、敏感数据存储
四、EntityFrameWork
- EF Code First
- 切换Sqllite数据库
(1). 添加"Microsoft.EntityFrameworkCore.Sqlite"引用。
(2). 修改Startup.cs中的"ConfigServices"方法 。
var connection = "Filename=./efcoredemo.db";
services.AddDbContext<DataContext>(options => options.UseSqlite(connection));
五、其他
-
Views/Shared/_Layout.cshtml:共享的布局。@RenderBody()是个占位符。具体试图会填充该部分内容。
-
Controller和View进行数据传输,可以使用ViewData字典、ViewBag或者强类型的(Model)等...
-
IOC:IOC
-
依赖注入:DI
六、Web Api
七、Asp.net Identidy
1、Getting Start
2、术语解释
SignInManager: 主要处理注册登录相关业务逻辑。
UserManager:处理用户相关添加删除,修改密码,添加删除角色等。
RoleManager:角色相关添加删除更新等。
Claims:证件单元。
ClaimsIdentity:身份证。
ClaimsPrincipal:证件当事人。
3、 Authentication(认证)
AuthenticationManager:认证管理员。
AuthenticationScheme:验证方案名称。
IAuthenticationHandler:以后如果需要重写认证相关的东西,实现IAuthenticationHandler就可以了。
4、 Authorization(授权)
github上很好的入门例子,有步骤讲解。
ASP.NET Core Authorization Lab。
5、 账号验证和密码找回
(1). 修改ConfigureServices方法,启用邮箱验证。
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.SignIn.RequireConfirmedEmail = true;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
(2). 添加"MailKit"引用,使用"MailKit"发送邮件。
(3). 启用账号验证。
在AccountController.cs
的[HttpPost]Register
方法中取消注释的代码启用账号验证。
(4). 启用密码找回。
在AccountController.cs
的ForgotPassword
方法中取消注释的代码。
(5). 取消Views/Account/ForgotPassword.cshtml
中的注释。
(6). 避免用户未验证邮箱就登陆。
修改AccountController.cs
中的[HttpPost]Login
方法,添加如下代码。
// Require the user to have a confirmed email before they can log on.
var user = await _userManager.FindByEmailAsync(model.Email);
if (user != null)
{
if (!await _userManager.IsEmailConfirmedAsync(user))
{
ModelState.AddModelError(string.Empty,
"You must have a confirmed email to log in.");
return View(model);
}
}
6、 JWT Token Authenticating
-
注意:使用的时候在Postman中注入token是"Bearer balabalabala..."
-
Sample
八、Send Email
- .Net Framework
public static class MailHelper
{
public static void SendEmail()
{
//声明一个Mail对象
MailMessage mymail = new MailMessage();
//发件人地址
//如是自己,在此输入自己的邮箱
mymail.From = new MailAddress("18211019093@163.com");
//收件人地址
mymail.To.Add(new MailAddress("18211019093@163.com"));
//邮件主题
mymail.Subject = "Subject";
//邮件标题编码
mymail.SubjectEncoding = System.Text.Encoding.UTF8;
//发送邮件的内容
mymail.Body = "这是一个测试邮件";
//邮件内容编码
mymail.BodyEncoding = System.Text.Encoding.UTF8;
//添加附件
//Attachment myfiles = new Attachment(tb_Attachment.PostedFile.FileName);
//mymail.Attachments.Add(myfiles);
//抄送到其他邮箱
//mymail.CC.Add(new MailAddress(tb_cc.Text));
//是否是HTML邮件
//mymail.IsBodyHtml = true;
//邮件优先级
mymail.Priority = MailPriority.High;
//创建一个邮件服务器类
SmtpClient myclient = new SmtpClient();
myclient.Host = "SMTP.163.com";
//SMTP服务端口
myclient.Port = 25;
//验证登录
myclient.Credentials = new NetworkCredential("userName", "授权码");//"@"输入有效的邮件名, "*"输入有效的密码
myclient.Send(mymail);
}
}
- Asp.net Core
使用第三方服务:MailKit。