[英]Make a logout button in ASP.NET Core
我是 ASP.NET Core 的新手,我通过 session 创建了一个简单身份验证的登录页面。 我正在尝试制作一个可以将您注销的按钮,但我不知道该怎么做。 这就是我想出的:
这是我的 controller:
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
IConfiguration _Configuration;
SecurityService _securityService;
public HomeController(ILogger<HomeController> logger,
IConfiguration configuration,
SecurityService securityService)
{
_logger = logger;
_Configuration = configuration;
_securityService = securityService;
}
public IActionResult Index()
{
var loggedIn = HttpContext.Session.GetString("SessionUser");
if(loggedIn == "admin")
{
return View();
}
else
{
return View("Login");
}
}
public IActionResult Login(UserModel user)
{
Boolean success = _securityService.Authenticate(user, _Configuration);
if (success)
{
HttpContext.Session.SetString("SessionUser", user.Username);
return RedirectToAction("Index");
}
else
{
return View("Login");
}
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
这是我的 SecurityDAO,我在其中查找用户是否存在于数据库中:
public class SecurityDAO
{
internal bool FindByUser(UserModel user, IConfiguration Configuration)
{
string connectionString = Configuration["ConnectionStrings:Database"];
bool success = false;
string queryString = "SELECT * FROM users WHERE username = @username AND password = @password";
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
MySqlCommand command = new MySqlCommand(queryString, connection);
command.Parameters.Add("@username", MySqlDbType.VarChar, 50).Value = user.Username;
command.Parameters.Add("@password", MySqlDbType.VarChar, 50).Value = user.Password;
try
{
connection.Open();
MySqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
success = true;
}
else
{
success = false;
}
}
catch (Exception ex)
{
throw ex;
}
}
return success;
}
}
这是我的安全服务:
public class SecurityService
{
SecurityDAO daoService = new SecurityDAO();
public bool Authenticate(UserModel user, IConfiguration Configuration)
{
return daoService.FindByUser(user, Configuration);
}
}
预先感谢! 最好的问候马克斯
您可以为您的视图创建一个锚元素并使用asp-action
标记在 controller 中调用适当的操作方法:
<a class="btn" asp-action="Logout" asp-controller="Home">Logout</a>
如果您想在用户登录时隐藏此按钮,您可以将 model 字符串传递给 controller 中的视图,并使用您的SessionUser
数据确定是否显示该按钮
@if(!string.IsNullOrEmpty(Model.SessionUser))
{
<a class="btn" asp-action="Logout" asp-controller="Home">Logout</a>
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.