首页 > 编程语言 >vue +asp.net core webapi跨域

vue +asp.net core webapi跨域

时间:2023-10-18 21:44:42浏览次数:36  
标签:webapi core vue string get api var new public

 

 

 

 

 

 

 

 

 

 

vue代码:

 

 

login.vue 

 

<template>     <div class="login-wrap">             <el-button type="primary" style="width:100%;" @click="doSubmit()">提交</el-button>             </div> </template>
<script> import axios from 'axios' export default {   name: 'Login',   data () {     return {       msg: 'Welcome to Your Vue.js App'     }       },   methods:{     doSubmit: function()     {         axios.get('/api/WeatherForecast/get').then(             response => {                 console.log('请求成功了')                 //请求成功后更新List的数据                 console.log("返回值:"+response.data);
                            },             error => {                 //请求后更新List的数据                 alert('菜鸡,你失败了');
                console.log("失败返回值:"+error);
            }         )
   },    gotoRegister: function(){        console.log("注册信息") } } } </script>
<style scoped>     </style>     vue.config.js代码     module.exports = {   devServer:{     proxy:{       '/api':{//表示拦截以/api开头的请求路径         target:'http://localhost:5232',         changOrigin: true,//是否开启跨域         pathRewrite:{           '^/api':'' //重写api,把api变成空字符,因为我们真正请求的路径是没有api的         }       }     }   } }     webapi代码    

using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
using System.Text;
using System.Security.Cryptography;
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
namespace WebApplication2.Controllers
{
[ApiController]
[Route("api/[controller]/[action]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};

private readonly ILogger<WeatherForecastController> _logger;

public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}

[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}

[HttpPost]
public string Login([FromBody] UserModel userModel)
//public string Login(string userName, string password)
{
//var Permission = "Permission";
var userId = "1";
//验证用户名密码
//创建JWT
// header
var signingAlgorithm = SecurityAlgorithms.HmacSha256;
// payload
var claims = new List<Claim>
{
new Claim(JwtRegisteredClaimNames.Sub,userId),
};
var secretByte = Encoding.UTF8.GetBytes("dengfenglaiSecretKey");

var signingKey = new SymmetricSecurityKey(secretByte);
var signingCredentials = new SigningCredentials(signingKey, signingAlgorithm);

var token = new JwtSecurityToken(
//颁发者
issuer: "dengfneglai", //_configuration["Authentication:Issuer"],
//接收者
audience: "zhuifengqu", //_configuration["Authentication:Audience"],
//自定义参数
claims,
notBefore: DateTime.UtcNow,
//过期时间
expires: DateTime.UtcNow.AddDays(1),
//签名证书
signingCredentials
);
var tokenStr = new JwtSecurityTokenHandler().WriteToken(token);
return tokenStr;

//return "哈哈哈";

}

[Serializable]
public class UserModel
{
public string username { get; set; }
public string password { get; set; }

}


public class JWTTokenOptions
{
public string Audience { get; set; }
public string SecurityKey { get; set; }
public string Issuer { get; set; }
}

 

 

}

public interface ICustomJWTService
{
string GetToken(string UserName, string PassWord);
}
}

 

 

Program.cs代码

 

 

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();

builder.Services.AddCors(options =>
options.AddPolicy("cors",
p => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials()));
var app = builder.Build();

// Configure the HTTP request pipeline.

app.UseAuthorization();

app.MapControllers();

app.Run();

 

 

标签:webapi,core,vue,string,get,api,var,new,public
From: https://www.cnblogs.com/wugh8726254/p/17773415.html

相关文章

  • vue项目运行内存不足 JS stacktrace
     因为node配置的环境变量默认是4096,如果vue项目过大,可能就会导致保存的时候,项目死掉。解决办法:1、我的电脑右键属性 2、搜索环境变量,点击编辑系统环境变量 3、点击环境变量4、更改默认值......
  • EFCore学习笔记 - 主键
    主键1、自增主键简单,但是不满足分布式,并发性能差long、int等类型主键,默认为自增自增字段的代码中不能为Id赋值,必须保持默认值0,否则运行的时候就会报错因为是数据库生成的值,所以SaveChanges()后会自动把主键的值更新到Id例子:插入帖子后,自动重定向......
  • EF Core学习笔记 - 配置
    约定配置1、主要规则表名采用DbContext中对应的DbSet的属性名数据表列的名字采用实体类属性的名字,列的数据类型采用喝实体类属性类型最兼容的类型,可以自定义设置数据表列的可空性取决于对应实体类属性的可空性名字为Id的属性为主键如果主键为short,int或者lo......
  • 40 vue 应用
    这节课主要讲的是vue的工作流程,一层层打包,最终在index.html执行入口下面看看就行,总结再单独做一个小结vue是一个框架,一层一层规范好了.渐进式?前端三件套能做的,vue都可以做到。反之亦然。vue更方便而已,而且框架清晰。一个vue项目的完整结构vue-->mian.js-->index.html......
  • vue3文件导入导出
    导入://导入constimportExcel=async(file:any)=>{letformData=newFormData();//声明一个FormDate对象formData.append("file",file.raw);//把文件信息放入对象中//调用后台导入的接口importExcelAccount(formData).then(res=>{......
  • vue 数组 下标/索引 响应式修改
    this.data对象中的一个数组属性[3]="ttt";//修改后,值有时候在模板中能更新(可能第一次是可以的?),有时候不更新splice实现的等效效果:this.data对象中的一个数组属性.splice(3,1,"ttt");$set实现的等效效果:this.set(this.data对象中的一个数组属性,3,"ttt");......
  • vue2.x和vue3.x关于获取表格某一行的写法真的不同绝了
    vue2.x<el-table-columnlabel="测试"align="center"prop="ce"><templateslot-scope="scope"><span>{{scope.row.ce}}</span></template>vue3.x<el-table-columnprop=&q......
  • vue 动态引入 js 文件
    在目录比如utils/options/下面建不同名字的js,再根据 this.type变量的值动态引入。(注意this.type变量的值要和相对应的js文件名一致onLoad(options){this.type=options&&options.typeconstfile=require(`@/utils/options/${this.type}.js`)t......
  • vue3.x增加数据功能
    具体代码<template><el-form:model="form":rules="rules"ref="ruleFormSSS"label-width="120px"><el-form-itemlabel="用户姓名"prop="name"><el-inputv-model="form.......
  • 需求:vue3+swiper+ts实现轮播图(中间主体轮播,左右各显示部分)
    一、下载安装swiper安装:pnpminstallswiper使用你熟悉的方式来安装(yarnnpmcnpm)二、在项目中引入swiper1.main.js文件点击查看代码import'swiper/swiper-bundle.css';import"swiper/css"2.页面代码实现点击查看代码<scriptsetup>import{ref,reactive}fr......