//登录
public LoginResponse Login(string userName, string userPassword)
{
using (WebSiteDbContext dbContext = new WebSiteDbContext())
{
LoginResponse result = new LoginResponse();
User user = dbContext.Users.FirstOrDefault(c => c.Name == userName);
if (user == null)
{
result.Successful = false;
result.Message = "用户不存在";
result.Token = null;
return result;
}
if (user.Password == userPassword)
{
result.Successful = false;
result.Message = "密码错误";
result.Token = null;
return result;
}
string accessToken = GenerateToken(user);
result.Successful = true;
result.Message = "登录成功";
result.Token = GenerateToken(user);
return result;
}
}
生成token
private string GenerateToken(User user)
{
string result;
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
SecurityTokenDescriptor tokenDescriptor = new SecurityTokenDescriptor();
tokenDescriptor.Expires = DateTime.UtcNow.AddDays(7);
tokenDescriptor.Subject = new ClaimsIdentity(new[] {
new Claim("userName", user.Name),
new Claim("userId",user.Id.ToString())
});
var token = tokenHandler.CreateToken(tokenDescriptor);
result = tokenHandler.WriteToken(token);
return result;
}
当前端携带token而来 需要被验证的接口应该如何处理。例如
[HttpPost]
public SimpleResponse AddNews(News newsWebsite)
{
SimpleResponse result = new SimpleResponse();
using (WebSiteDbContext dbContext = new WebSiteDbContext())
{
dbContext.News.Add(newsWebsite);
dbContext.SaveChanges();
result.Successful = true;
result.Message = "已添加";
return result;
}
}
前置一个 Token 认证中间件
详见:https://jasonwatmore.com/post...