zoukankan      html  css  js  c++  java
  • .net Core 用户登入身份验证简单的demo

    下面是.net Core Startup文件的配置信息,关注标红的地方

    using Microsoft.AspNetCore.Authentication.Cookies;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.DependencyInjection;
     
    namespace Demo
    {
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddMvc();
                //添加 身份验证 服务
                services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).
                 AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, o =>
                 {
                     o.LoginPath = new PathString("/Home/Login");
                 });
            }
     
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
     
                //路由设置默认起始为  指定的Hmoe/Center
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Center}");
                });
                //使用身份验证服务
                app.UseAuthentication();
            }
        }
    }
    

      以下是 控制器代码,关注标红的地方

    using Microsoft.AspNetCore.Authentication;
    using Microsoft.AspNetCore.Authentication.Cookies;
    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Mvc;
    using System.Security.Claims;
     
    namespace Demo.Controllers
    {
        public class HomeController : Controller
        {
            public IActionResult Login()
            {
                return Content("Login");
            }
            public IActionResult DoLogin()
            {
                /*
                 * 记录cookie之前要对用户的帐号和密码进行验证
                 * 如果验证成功则把id和用户名记入 cookie
                 * (帐号和密码验证要查询数据库 我在这里就没有去处理,下面默认是验证通过后的代码)
                 * 登录以后获取token,
                 * 获取传递的token,去用户信息
                 * 
                 */
                string token = "123456";
                string name = "狼来了";
                ClaimsIdentity identity = new ClaimsIdentity("Forms");
     
                identity.AddClaim(new Claim(ClaimTypes.Sid, token));
                identity.AddClaim(new Claim(ClaimTypes.Name, name));
     
                ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(identity);
                HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal);
     
                return Content("登录成功!!");
            }
     
            /// <summary>
            /// 用户进入内容的之前 先去用户信息进行验证
            /// 如果验证不通过则进入 Home/Login 这个是在添加服务配置时添加的
            /// </summary>
            /// <returns></returns>
            [Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
            public IActionResult Center()
            {
                 string sid= User.FindFirstValue(ClaimTypes.Sid);//获取ID
                 string mane= User.FindFirstValue(ClaimTypes.Name);//获取用户名
                 return Content("Center");
            }
            public IActionResult Logout()
            {
               HttpContext.SignOutAsync().Wait();//注销
               return Content("退出成功!!");
            }
        }
    }
    

      So easy!!!!!!

  • 相关阅读:
    编程之美 2.3寻找发帖‘水王’ 扩展问题
    编程之美:1.12 扩展问题 解答与思考
    编程之美:1.9高效率安排见面会 图的m着色问题 回溯法
    研究生毕业课题怎么确定(转)
    图模型的统计推断 inference in graphical models(马尔科夫链的推断)
    微信js-sdk注意事项
    bootstrap-material-design-个人总结
    前端页面优化
    Material Design
    马克飞象
  • 原文地址:https://www.cnblogs.com/wolfocme110/p/13586762.html
Copyright © 2011-2022 走看看