zoukankan      html  css  js  c++  java
  • .net core 学习小结之 Cookie-based认证

    • 在startup中添加授权相关的管道
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Threading.Tasks;
      using Microsoft.AspNetCore.Builder;
      using Microsoft.AspNetCore.Hosting;
      using Microsoft.Extensions.Configuration;
      using Microsoft.Extensions.DependencyInjection;
      
      
      namespace mvcforcookie
      {
          using Microsoft.AspNetCore.Authorization;
          using Microsoft.AspNetCore.Authentication.Cookies;
          public class Startup
          {
              public Startup(IConfiguration configuration)
              {
                  Configuration = configuration;
              }
      
              public IConfiguration Configuration { get; }
      
              // This method gets called by the runtime. Use this method to add services to the container.
              public void ConfigureServices(IServiceCollection services)
              {
                  services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(option => option.LoginPath = "/Acounnt/Index");
                  services.AddMvc();
              }
              // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
              public void Configure(IApplicationBuilder app, IHostingEnvironment env)
              {
                  if (env.IsDevelopment())
                  {
                      app.UseDeveloperExceptionPage();
                  }
                  else
                  {
                      app.UseExceptionHandler("/Home/Error");
                  }
                  app.UseStaticFiles();
                  app.UseAuthentication();
                  app.UseMvc(routes =>
                  {
                      routes.MapRoute(
                          name: "default",
                          template: "{controller=Home}/{action=Index}/{id?}");
                  });
              }
          }
      }
    • 将需要权限访问的页面贴上特性标签 
      [Authorize(Roles="Admin")] 表名只有Admin身份的人才能进入Admin控制器
    • 用户成功输入用户名和密码之后生成用户票据
      using System;
      using System.Collections.Generic;
      using System.Diagnostics;
      using System.Linq;
      using System.Threading.Tasks;
      using Microsoft.AspNetCore.Mvc;
      using mvcforcookie.Models;
      
      namespace mvcforcookie.Controllers
      {
          using Microsoft.AspNetCore.Authorization;
          using Microsoft.AspNetCore.Authentication.Cookies;
          using Microsoft.AspNetCore.Authentication;
          using System.Security.Claims;
          public class AcounntController : Controller
          {
              public IActionResult Index()
              {
                  //数据库查询用户输入的用户名和密码等一系列匹配操作
                  //模拟用户登录后的操作
                  //创建一个用户身份
                  var claims=new List<Claim>{
                      new Claim(ClaimTypes.Name,"cyao"),
                      new Claim(ClaimTypes.Role,"Admin")
                  };
                  var claimidentity=new ClaimsIdentity(claims,CookieAuthenticationDefaults.AuthenticationScheme);
                  //向上下文容器中添加当前用户
                  HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,new ClaimsPrincipal(claimidentity));
                  return Ok();
              }
              public IActionResult LoginOut()
              {
                  HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
                  return Ok();
              }
          }
      }
    • 如果要获取当前用户的身份和用户名的话
            ViewBag.User= User.Claims.Where(c =>c.Type==ClaimTypes.Name).First().Value;
            ViewBag.Type= User.Claims.Where(c =>c.Type==ClaimTypes.Role).First().Value;
  • 相关阅读:
    vs2005中 fstream 不支持中文路径问题的解决方法:
    CString char* string 互转
    OpenGl显示,任意大小的图片作为背景
    combo box
    Android 开发环境搭建
    打开子对话框 选择文件
    (转)Static MemoryLayout_shadow memory
    (转)深入剖析I/O约束
    (转)set_input_delay/ set_output_delay之图解
    (转)PrimeTime分析流程
  • 原文地址:https://www.cnblogs.com/chongyao/p/8631568.html
Copyright © 2011-2022 走看看