Asp.net core mvc 如何使vNext使用我的自定义标识码?
我想实现一个自定义登录系统,因为我的用户存储在不同的数据库中,我只有一个dll来验证凭据,所以我不需要数据库。我只想能够登录(与角色:管理员和用户)和注销此应用程序。在工具的数据库中,我只保存用户名和他的角色(没有密码) 第一:我必须实现哪些类才能达到预期的效果Asp.net core mvc 如何使vNext使用我的自定义标识码?,asp.net-core-mvc,asp.net-identity-3,Asp.net Core Mvc,Asp.net Identity 3,我想实现一个自定义登录系统,因为我的用户存储在不同的数据库中,我只有一个dll来验证凭据,所以我不需要数据库。我只想能够登录(与角色:管理员和用户)和注销此应用程序。在工具的数据库中,我只保存用户名和他的角色(没有密码) 第一:我必须实现哪些类才能达到预期的效果 第二:如何配置应用程序,使其使用我的自定义代码 我不确定我做得是否100%正确,但看看: 1。配置cookies身份验证 public void Configure(IApplicationBuilder app)
第二:如何配置应用程序,使其使用我的自定义代码 我不确定我做得是否100%正确,但看看: 1。配置cookies身份验证
public void Configure(IApplicationBuilder app)
{
app.UseCookieAuthentication(options =>
{
options.AutomaticAuthentication = true;
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
});
}
public class LoginController: Controller
{
public IActionResult SignIn(LoginModel form)
{
var userId = CustomLoginLogic(form);
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, result.UserId)
};
var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme));
context.Response.SignIn(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal);
return Content("");
}
}
2。登录
public void Configure(IApplicationBuilder app)
{
app.UseCookieAuthentication(options =>
{
options.AutomaticAuthentication = true;
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
});
}
public class LoginController: Controller
{
public IActionResult SignIn(LoginModel form)
{
var userId = CustomLoginLogic(form);
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, result.UserId)
};
var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme));
context.Response.SignIn(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal);
return Content("");
}
}
公共类登录控制器:控制器
{
公共IActionResult登录(登录模型表单)
{
var userId=CustomLoginLogic(表单);
var索赔=新列表
{
新声明(ClaimTypes.NameIdentifier、result.UserId)
};
var claimsPrincipal=new claimsPrincipal(new ClaimsIdentity(claims,CookieAuthenticationDefaults.AuthenticationScheme));
context.Response.SignIn(CookieAuthenticationDefaults.AuthenticationScheme,claimsPrincipal);
返回内容(“”);
}
}
我理解了CustomLoginLogic(表单)
的思想,它只是根据我的BL需求返回用户ID,但我不完全理解索赔部分。索赔的名称是什么?我如何使用它来授权基于此的访问?使用我正在执行的角色:[Authorize(roles=“Admin”)]
我想您也可以添加另一个类型为ClaimTypes.Role
的声明,并检查它是否有助于基于角色的授权我了解了ClaimTypes
的目的,但我有最后一个问题:当使用不具有的角色访问控制器操作时,它不会直接登录。最后一步该怎么做?我尝试:options.LoginPath=newpathString(“/Account/Login”)代码>没关系,它将转到我的虚拟身份验证控制器并重定向回来