ASP.NET Core API #7: Menambahkan Fitur Login dan Registrasi - Non BCrypt dan JWT

Berikut adalah kode untuk endpoint registrasi dan login sederhana tanpa BCrypt dan tanpa JWT (password plain text, tanpa token). 
Kode ini bisa digunakan sebagai alternatif dari artikel #7. Saya akan sajikan dalam bentuk cuplikan kode yang siap dipakai di controller.
csharp
// DTO untuk Register dan Login
public class RegisterDto
{
    public string Username { get; set; }
    public string Password { get; set; } // plain text!
}

public class LoginDto
{
    public string Username { get; set; }
    public string Password { get; set; }
}

// Di dalam AuthController.cs (tanpa JWT, tanpa BCrypt)
[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase
{
    private readonly WisataDbContext _context;

    public AuthController(WisataDbContext context)
    {
        _context = context;
    }

    // POST: api/auth/register
    [HttpPost("register")]
    public async Task<IActionResult> Register(RegisterDto dto)
    {
        // Cek username sudah ada?
        if (await _context.Users.AnyAsync(u => u.Username == dto.Username))
            return BadRequest("Username sudah digunakan.");

        var user = new User
        {
            Username = dto.Username,
            Password = dto.Password // plain text! (TIDAK AMAN)
        };

        _context.Users.Add(user);
        await _context.SaveChangesAsync();
        return Ok("Registrasi berhasil.");
    }

    // POST: api/auth/login
    [HttpPost("login")]
    public async Task<IActionResult> Login(LoginDto dto)
    {
        var user = await _context.Users
            .FirstOrDefaultAsync(u => u.Username == dto.Username);

        if (user == null || user.Password != dto.Password)
            return Unauthorized("Username atau password salah.");

        // Login sukses, tidak mengembalikan token
        return Ok(new { message = "Login berhasil", username = user.Username });
    }
}

Model User (tanpa hash):

csharp
public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; } // plain text
}
Penjelasan:
  • Tidak perlu install BCrypt atau package JWT.
  • Password disimpan apa adanya (plain text) — sangat tidak aman.
  • Tidak ada token yang dikembalikan; setelah login hanya dapat pesan sukses.
  • Cocok untuk pembelajaran alur dasar, tapi jangan dipakai di production.
Jika ingin menggabungkan dengan JWT tapi tanpa BCrypt, bisa tetap gunakan JWT dengan password plain text (tetap tidak aman). Tapi untuk keamanan minimal, gunakan BCrypt + JWT seperti di artikel #7 yang asli.

Lebih baru Lebih lama

نموذج الاتصال