新建net core2.1 mvc工程

mac2024-03-21  33

一、修改cookie设置

默认,使用cookie存值需要用户同意,改成false去掉限制。 (修改Startup.cs文件)

 

二、添加跨域设置

修改Startup.cs文件

1.在ConfigureServices方法中,添加

//urls 访问地址 string[] urls = { "http://192.168.1.110:8080", "http://localhost:8080", "http://192.168.1.111:8080" }; //添加跨域访问服务 services.AddCors(options => options.AddPolicy("AllowSameDomain", builder => builder.WithOrigins(urls).AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()) );

2.在Configure中,添加

// 使用跨域访问服务 app.UseCors("AllowSameDomain");

3.在要跨域的方法或控制器上,添加

[EnableCors("AllowSameDomain")]

 

三、添加cookies登录认证

修改Startup.cs文件

1.在ConfigureServices方法中,添加

//注册Cookie认证服务,   在mvc注册后面 services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();

2.在Configure中,添加

// 启用Cookie认证中间件

app.UseAuthentication();

3.登录和取数据的方法

<1>登录

// 有效负载内容 var claims = new[] { new Claim("userName", userName) }; // 存入cookie var claimsIdentity = new ClaimsIdentity( claims, CookieAuthenticationDefaults.AuthenticationScheme); ClaimsPrincipal user = new ClaimsPrincipal(claimsIdentity); Task.Run(async () => { await HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, user, new AuthenticationProperties() { IsPersistent = true, // 过期时间60(分钟) ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(60), AllowRefresh = true }); }).Wait();

<2>取数据

var userName = HttpContext.User.Claims.Where(claim => claim.Type == "userName").First().Value;

<3>登出

Task.Run(async () => { // 注销登录的用户,相当于ASP.NET中的FormsAuthentication.SignOut await HttpContext.SignOutAsync(); }).Wait();

<4>判断是否登录

if (HttpContext.User.Identity.IsAuthenticated) { // 登录状态 } else { // 未登录 }

四、添加过滤器

1.新建一个类,继承Attribute, IActionFilter

2.在Startup.cs中,

<1>全局注册

            services.AddMvc(options =>             {                 options.Filters.Add(typeof(新建的类名));             });

<2>局部注册

在控制器或action上面添加

            [新建的类名]

 

最新回复(0)