小编Alo*_*ras的帖子

使用 JWT 在 C# 中生成令牌的签名无效

我学会了用 ASP.Net core 生成令牌...

我有一个生成令牌验证的方法......这个

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJQYXR5IiwianRpIjoiY2Q5OGE3NjMtOGRkZC00NWM1LTg3MzAtMGE2MDBjZDE1NTg1IiwiZXhwIjoxNTUwNzE2OTQwLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjYzOTM5LyIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NjM5MzkvIn0.ndvWn-pBwdo7UlxFvuE0IPWnxpDtzAKTfq_FRkgMFeM
Run Code Online (Sandbox Code Playgroud)

当您将令牌粘贴到 jwt.io 中时,这会显示:无效签名,但令牌仍然具有值 user....为什么 jwt.io 显示此消息?

生成token的方法:

    public static string CreateToken(User user, string keyValue, string issuer)
    {
        /* keyValue = "veryVerySecretKey" */
        /* issuer = "http://localhost:63939/" */

        var claims = new[] {
          new Claim(JwtRegisteredClaimNames.Sub, user.Name),
          new Claim(JwtRegisteredClaimNames.Jti, user.Id.ToString())
        };



        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keyValue));

        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

        var token = new JwtSecurityToken(issuer,
          issuer,
          claims,
          expires: DateTime.Now.AddMinutes(30),
          signingCredentials: creds);

        return new JwtSecurityTokenHandler().WriteToken(token);
    }
Run Code Online (Sandbox Code Playgroud)

c# authentication token jwt

7
推荐指数
1
解决办法
8236
查看次数

指数超出范围。插入 EF Core 后

我正在使用 EF Core 来处理我的数据库,并且我想将一条记录插入到我的 postgresql 数据库中。

但是当我插入记录并保存更改时,应用程序会抛出错误:

指数超出范围。必须为非负数且小于集合的大小。(参数“索引”)

我知道当我使用集合时可能会出现此错误,但在本例中我正在执行插入。

我的基本实体:

public abstract class BaseEntity: IBaseEntity<long>
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key, Column("id", Order = 0)]
    public long Id { get; set; }

    [Column("createdAt")]
    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime CreatedAt{ get; set; }

}
Run Code Online (Sandbox Code Playgroud)

从业务层插入:

  var entityToInsert = new Delivery()
  { 
       State = 1, //active
       Date = DateTime.Now,
  };

  await this.UOW.Delivery.CreateAsync(entityToInsert);
  await this.UOW.SaveChangesAsync();
Run Code Online (Sandbox Code Playgroud)

我的通用存储库方法:

    public async Task<TEntity> CreateAsync(TEntity entity)
    {
        await Context.AddAsync<TEntity>(entity);
        return entity;
    }
Run Code Online (Sandbox Code Playgroud)

交货表定义:

id         bigint // type identity "by default" autoincrment 1 per …
Run Code Online (Sandbox Code Playgroud)

postgresql entity-framework-core

5
推荐指数
0
解决办法
526
查看次数

如何返回带有消息的响应,JAX RS

我有一个使用jax-rs的Web服务,我的服务返回一个对象列表,但是您不知道如何添加自定义状态值来响应,例如,我要构建的结果如下:

如果可以:

{
   "status": "success",
   "message": "list ok!!",
   "clients": [{
        "name": "john",
        "age": 23
    },
    {
        "name": "john",
        "age": 23
    }]
}
Run Code Online (Sandbox Code Playgroud)

如果是错误:

{
   "status": "error",
   "message": "not found records",
   "clients": []
}
Run Code Online (Sandbox Code Playgroud)

我的休息服务:

 @POST
 @Path("/getById")
 @Consumes(MediaType.APPLICATION_JSON)
 @Produces(MediaType.APPLICATION_JSON)
 public List<Client> getById(Client id) {

  try {

       return Response.Ok(new ClientLogic().getById(id)).build();
       //how to add status = success, and message = list! ?

    } catch (Exception ex) {
       return  ??   
       // ex.getMessage() = "not found records"
       //i want return json with satus = error …
Run Code Online (Sandbox Code Playgroud)

java json return response jax-rs

3
推荐指数
2
解决办法
7448
查看次数

自动生成对象 ID mongo db c#

我用 C# 学习 mongodb,我想创建一个包含实体列表的记录,但子实体没有生成他的对象 ID。

这是我的代码:

public class Curso
{
    [BsonId]
    public ObjectId _id { get; set; }

    [BsonElement("descripcion")]
    public string descripcion { get; set; }

    [BsonElement("horas")]
    public int horas { get; set; }

    [BsonElement("alumnos")]
    public IEnumerable<Alumno> alumnos { get; set; }

    public Curso()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

校友实体:

public class Alumno
{
    [BsonId]
    public ObjectId _id { get; set; }

    [BsonElement("name")]
    public string name { get; set; }

    [BsonElement("age")]
    public int age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我插入了一个新课程,自动生成 id Curso …

c# database identity mongodb mongodb-.net-driver

2
推荐指数
1
解决办法
6735
查看次数

插入对象EF不起作用

我想插入对象到SQL服务器数据库,我使用EF 6.x. 但是当我执行Create方法时,这个成功并没有显示任何错误,但在数据库中是空的:/.

 public class ProductoEntity
 {
        public int ID { get; set; }
        public string Descripcion { get; set; }
        public string Categoria { get; set; }
        public int Precio { get; set; }


        public Producto toSql()
        {
            var sqlEntity = new Producto();
            sqlEntity.Descripcion = this.Descripcion;
            sqlEntity.Categoria = this.Categoria;
            sqlEntity.Precio = this.Precio;

            return sqlEntity;
        }

        public bool Create()
        {
            bool result = false;

            try
            {
                StoreEntities context = new StoreEntities();
                context.Producto.Add(toSql()); ;
                result = true;
            }
            catch (Exception ex) …
Run Code Online (Sandbox Code Playgroud)

c# sql frameworks entity crud

0
推荐指数
1
解决办法
58
查看次数

在 .NET Core 中使用 Dapper 从存储过程插入获取 id

我正在使用 Dapper,并且编写了一个存储过程,用于插入一行并返回标识值。

使用Dapper,我想捕获这个标识值,但结果作为动态类型返回,我不知道如何访问这个id。

我的存储过程:

CREATE PROCEDURE USER_INSERT
    (@name  varchar(30),
     @job   varchar(30))    
AS    
BEGIN    
    INSERT INTO User (name, job) 
    VALUES (@name, @job)

    SELECT SCOPE_IDENTITY()
END 
Run Code Online (Sandbox Code Playgroud)

C#代码:

public async Task<int> InsertTest()
{
    using (var connection = new SqlConnection("myconnectionstring"))
    {
        string SP_INSERT = "USER_INSERT";

        var parameters = new { name = "Jon", job = "developer" };

        var insert =  await connection.QueryAsync(SP_INSERT, parameters, commandType: CommandType.StoredProcedure);

        var resultInsert = insert.SingleOrDefault();
    }

    return 0; //only for test
}
Run Code Online (Sandbox Code Playgroud)

查询结果截图,如何访问我的id字段?

在此处输入图片说明

c# sql-server identity stored-procedures dapper

0
推荐指数
1
解决办法
704
查看次数

如何按位置分割字符串#

我有一个文本字符串,当它超过特定长度时,我将字符串分成 2 个字符串,将剩余内容的其余部分传递给另一个变量,但我有一个例外

索引和长度必须引用字符串中的位置。(参数“长度”)

我的 C# 代码:

        string text = "Hello word jeje";
        if (text.Length > 10)
        { 
            string stringOne = text.Substring(0, 10);
            string stringTwo = text.Substring(11, text.Length); //throw exception
        }
Run Code Online (Sandbox Code Playgroud)

预期结果:

string text = "Hello word jeje";
string stringOne = "Hello";
string stringTwo = " jeje";
Run Code Online (Sandbox Code Playgroud)

c# indexing split

0
推荐指数
1
解决办法
2009
查看次数