30/09/2019, 08:29

Bắt đầu với .net core

1. Có thể thêm file _ViewImports.cshtml để add một số nội dung dùng chung @ using PuLog @ using PuLog . Models @ using PuLog . Areas . Admin @ using PuLog . Areas . Admin . Models @addTagHelper * , Microsoft . AspNetCore . Mvc . TagHelpers 2. Cài nuget ...

1. Có thể thêm file _ViewImports.cshtml để add một số nội dung dùng chung

@using PuLog

@using PuLog.Models

@using PuLog.Areas.Admin

@using PuLog.Areas.Admin.Models

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

2. Cài nuget BuildBundlerMinifier để nén code

3. Các lệnh cập nhật db

add-migration m1
update-datebase

4. Set route

app.UseMvc(routes =>
           {
               routes.MapRoute(
                  name: "default_route",
                  template: "{controller}/{slug}",
                  defaults: new { controller = "Posts", action = "Index" });
           });

5. Connect db

private readonly ApplicationDbContext _context;
 
   public ArticlesController(ApplicationDbContext context)
   {
       _context = context;
   }

6. Thiết lập biến môi trường

ASPNETCORE_ENVIRONMENT: Production, Development, Staging

7. Thêm role

// tạo biến đăng ký
private readonly UserManager<ApplicationUser> _userManager;
private readonly RoleManager<IdentityRole> _roleManager;
 
public Startup(IConfiguration configuration,
RoleManager<IdentityRole> roleManager, UserManager<ApplicationUser> userManager)
{
    Configuration = configuration;
    _userManager = userManager;
    _roleManager = roleManager;
}
 
// đăng ký
private async Task createRolesandUsers()
{
    bool x = await _roleManager.RoleExistsAsync("Admin");
    if (!x)
    {
        // first we create Admin rool    
        var role = new IdentityRole();
        role.Name = "Admin";
        await _roleManager.CreateAsync(role);
 
        //Here we create a Admin super user who will maintain the website                   
 
        var user = new ApplicationUser();
        user.UserName = "admin";
        user.Email = "[email protected]";
 
        string userPWD = "admin213";
        IdentityResult chkUser = await _userManager.CreateAsync(user, userPWD);
 
        //Add default User to Role Admin    
        if (chkUser.Succeeded)
        {
            var result1 = await _userManager.AddToRoleAsync(user, "Admin");
        }
    }
 
    // creating Creating Manager role     
    x = await _roleManager.RoleExistsAsync("Manager");
    if (!x)
    {
        var role = new IdentityRole();
        role.Name = "Manager";
        await _roleManager.CreateAsync(role);
    }
 
    // creating Creating Employee role     
    x = await _roleManager.RoleExistsAsync("Employee");
    if (!x)
    {
        var role = new IdentityRole();
        role.Name = "Employee";
        await _roleManager.CreateAsync(role);
    }
}
 
//Password Strength Setting
services.Configure<IdentityOptions>(options =>
{
   // Password settings
   options.Password.RequireDigit = true;
   options.Password.RequiredLength = 8;
   options.Password.RequireNonAlphanumeric = false;
   options.Password.RequireUppercase = true;
   options.Password.RequireLowercase = false;
   options.Password.RequiredUniqueChars = 6;

   // Lockout settings
   options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
   options.Lockout.MaxFailedAccessAttempts = 10;
   options.Lockout.AllowedForNewUsers = true;

   // User settings
   options.User.RequireUniqueEmail = true;
});

//Setting the Account Login page
services.ConfigureApplicationCookie(options =>
{
   // Cookie settings
   options.Cookie.HttpOnly = true;
   options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
   options.LoginPath = "/Account/Login"; // If the LoginPath is not set here,
                                         // ASP.NET Core will default to /Account/Login
   options.LogoutPath = "/Account/Logout"; // If the LogoutPath is not set here,
                                           // ASP.NET Core will default to /Account/Logout
   options.AccessDeniedPath = "/Account/AccessDenied"; // If the AccessDeniedPath is
                                                       // not set here, ASP.NET Core 
                                                       // will default to 
                                                       // /Account/AccessDenied
   options.SlidingExpiration = true;
});

9. Sữa mã lỗi 0x8007000d, khi public web

1 cài đặt

DotNetCore.2.0.0-WindowsHosting.exe

https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md#windows-server-hosting

Data Source=MINHPHUCSQLEXPRESS;Initial Catalog=Pokemon;Integrated Security=True

10. Chú ý, khi tiêm phụ thuộc

public readonly UserManager<IdentityUser> _userManager;
public readonly RoleManager<IdentityRole> _roleManager;

trong controller cần có quyền [Authorize]

[Area("Admin")]
[Authorize]
public class ArticlesController : Controller
0