【ASP.NET Core快速入门】(十)Cookie-based认证实现
2017-12-27 23:57
836 查看
准备工作
新建MVC项目,然后用VSCode打开dotnet new mvc --name MvcCookieAuthSample
在Controllers文件夹下新建AdminController.cs
@{ ViewData["Title"] = "Admin"; } <h2>@ViewData["Title"]</h2> <p>Admin Page</p>
View Code
运行结果:
Cookie-based认证实现
在AdminController中添加引用using Microsoft.AspNetCore.Authorization;
然后我们可以给AdminController添加 [Authorize] 标签
接下来我们需要把认证和授权引用进来,我们使用的是cookie的认证方式,所以在Startup.cs中添加认证的引用。
using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies;
然后在Startup方法中进行cookie的依赖注入
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options=>{//自定义登陆地址,不配置的话则默认为http://localhost:5000/Account/Login options.LoginPath="/Account/MyLogin"; });
然后我们要在Configure方法中把cookie中间件也添加进来,否则认证授权是不会生效的
app.UseAuthentication();
这时候我们再运行一下:
发现已经自动跳转到登陆地址了。
模拟登陆
我们暂时不做登陆的,只是模拟一下登陆,首先我们创建一个AccountController.cs然后添加引用
using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authentication.Cookies; using System.Security.Claims;
添加两个API用于登陆和登出
//登陆 public IActionResult MakeLogin() { var claims=new List<Claim>(){ new Claim(ClaimTypes.Name,"wangyuting"), new Claim(ClaimTypes.Role,"admin") }; //必须要加CookieAuthenticationDefaults.AuthenticationScheme,不然无法解析 var claimsIdentity=new ClaimsIdentity(claims,CookieAuthenticationDefaults.AuthenticationScheme); HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,new ClaimsPrincipal(claimsIdentity)); return Ok(); } //登出 public IActionResult Logout() { HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); return Ok(); }
访问http://localhost:5000/admin会跳转到http://localhost:5000/Account/MyLogin?ReturnUrl=%2Fadmin页面
然后我们访问http://localhost:5000/Account/MakeLogin模拟登陆,然后再访问http://localhost:5000/admin
最后访问http://localhost:5000/Account/logout登出,然后再访问http://localhost:5000/admin发现又跳转到我们自定义的登陆页面。
相关文章推荐
- 菜鸟入门【ASP.NET Core】10:Cookie-based认证实现
- 【ASP.NET Core快速入门】(十五)MVC开发:ReturnUrl实现、Model后端验证 、Model前端验证
- 【ASP.NET Core快速入门】(十四)MVC开发:UI、 EF + Identity实现、注册实现、登陆实现
- ASP.NET Core 快速入门(实战篇)
- 【ASP.NET Core快速入门】(一)环境安装
- asp.net core-13.Cookie-based认证实现
- 【ASP.NET Core快速入门】(七)WebHost的配置、 IHostEnvironment和 IApplicationLifetime介绍、dotnet watch run 和attach到进程调试
- 【ASP.NET Core快速入门】(十六)MVC开发:DbContextSeed初始化
- ASP.NET Core 快速入门(实战篇)
- ASP.NET Core 2.0使用Cookie认证实现SSO单点登录
- 【ASP.NET Core快速入门】(二)部署到IIS
- 【ASP.NET Core快速入门】(三)准备CentOS和Nginx环境
- 【ASP.NET Core快速入门】(十一)应用Jwtbearer Authentication、生成jwt token
- ASP.NET Core 2.0 多应用实现Cookie共享
- Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
- 【ASP.NET Core快速入门】(四)在CentOS上安装.NET Core运行时、部署到CentOS
- ASP.NET Core 快速入门(环境篇)
- 菜鸟入门【ASP.NET Core】14:MVC开发:UI、 EF + Identity实现、注册实现、登陆实现
- 【.NET Core】ASP.NET Core之IdentityServer4(1):快速入门
- 【ASP.NET Core快速入门】(九) RoutingMiddleware介绍以及MVC引入