-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadme.txt
79 lines (56 loc) · 2.5 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
由于今天的版本看起来很有可能成功,所以具体记录一下
//之前记得有过一个报错,直接把2.0的 emailsender类拿过来了
1、新建一个emailsender.cs
public class EmailSender : IEmailSender
{
public Task SendEmailAsync(string email, string subject, string message)
{
return Task.CompletedTask;
}
}
2、修改startup.cs
//主要的部分 AddDefaultIdentity改成 Addidentity, 增加 services.AddTransient<IEmailSender, EmailSender>(); 这里就定位到刚才创建的emailsender
services.AddIdentity<IdentityUser, IdentityRole>(options => {
//指定密码长度为6位
options.Password.RequiredLength = 6;
//是否要求有非字母数字的字符
options.Password.RequireNonAlphanumeric = false;
//是否要求有大写的ASCII字母
options.Password.RequireUppercase = false;
//是否要求有小写的ASCII字母
options.Password.RequireLowercase = false;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddTransient<IEmailSender, EmailSender>();
3、添加基架,否则这时候的注册和登陆页面完全不能用
//这两个控制器和视图也是从2.0抄来的
4、创建 UserAdmin和RoleAdmin的控制器和视图(目前Ilogger没法用)
//从2.0处抄来的
5、会有用到EditUserViewModel这个类 用来给用户分配角色
public class EditUserViewModel
{
public string Id { get; set; }
[Required(AllowEmptyStrings = false)]
[Display(Name = "Email")]
[EmailAddress]
public string Email { get; set; }
public IEnumerable<SelectListItem> RolesList { get; set; }
}
6、这个时候已经可以给账号分配角色了,比如我们新建一个角色叫做“管理员” 那么在一个特定的action上写
[Authorize(Roles = "管理员")]
就可以让管理员角色之外的用户被咔嚓掉,但是还有bug,此时2.1的拒绝访问被跳转到了 /account/accessdenied 而实际上
的页面应该是/Identity/Account/AccessDenied
//摘自官方文档,并没有任何人说应该抄这里的,我只是在官方文档中发现了 "/Identity/Account/AccessDenied"; 这个字段,所以我感觉他应该
//可以解决我的问题,然后没想到让我蒙对了
7、修改startup.cs
增加:
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(5);
options.LoginPath = "/Identity/Account/Login";
options.AccessDeniedPath = "/Identity/Account/AccessDenied";
options.SlidingExpiration = true;
});