Я планирую выполнить аутентификацию токена в C# WEB API, однако я столкнулся с этой firstordefault
проблемой
Мой код в приложении:
Я столкнулся с ошибкой, указанной здесь:
![enter image description here](https://i.stack.imgur.com/vIGcN.png)
На самом деле я пытаюсь сослаться на код из здесь , но похоже, что его код работает правильно.
Моя таблица базы данных и хранимая процедура EF_UserLogin
выглядит следующим образом:
use ProductCert
GO
CREATE TABLE [dbo].[UserLogin](
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserName] [varchar](50) NULL,
[UserPassword] [varchar](50) NULL,
[UserEmail] [varchar](50) NULL,
[UserRole] [varchar](50) NULL,
CONSTRAINT [PK_UserLogin] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
-- insert data in table
insert into UserLogin(UserName,UserPassword,UserEmail,UserRole)
values ('admin','123456','admin@gmail.com','admin')
-- create store procedure
create PROCEDURE [dbo].[EF_UserLogin]
@UserName varchar(50)=null,
@UserPassword varchar(50)=null
AS
BEGIN
SET NOCOUNT ON;
SELECT UserName,UserPassword,UserEmail,UserRole from UserLogin where UserName=@UserName and UserPassword=@UserPassword
END
Что я уже сделал:
- Я уже добавляю модель ADO. NET в проект, который называется
ProductCertEntities
Может кто-нибудь помочь мне в этом, я не знаю, с какими проблемами я сталкиваюсь (ToT).
ОБНОВЛЕНИЕ
Код, как показано ниже:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
ProductCertEntities obj = new ProductCertEntities();
var userdata = obj.EF_UserLogin(context.UserName, context.Password).FirstOrDefault();
if (userdata != null)
{
identity.AddClaim(new Claim(ClaimTypes.Role, userdata.UserRole));
identity.AddClaim(new Claim(ClaimTypes.Name, userdata.UserName));
context.Validated(identity);
}
else
{
context.SetError("invalid_grant", "Provided username and password is incorrect");
context.Rejected();
}
}