Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC 5 - create own login

Hy,

I'm very new to MVC 5 (or any other MVC). I want to create my own custom login with registration. Can somebody point me to this?

The login should have a simple email and password textbox. The registration should have additional data like first/lastname, age, etc. which stored in a table (user) and a dropdownbox with roles to select (stored in table "roles"). After successful login/registration should the user be redirected to the dashboard.

Or is there a good tutorial about this for MVC 5 .. I just found one for MVC 4.

Thanks for help :)

like image 934
Robert Jaskowski Avatar asked Oct 20 '25 10:10

Robert Jaskowski


1 Answers

Try this

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
    ViewBag.ReturnUrl = returnUrl;
    return View();
}

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        var user = MyViewModels.checkUser(model.UserName, model.Password);
        if (user!=null)
        {
            SignInAsync();
            return RedirectToAction("Welcome");
        }
        else
        {
            ModelState.AddModelError("", "Invalid username or password.");
        }
    }
    return View(model);
}

private void SignInAsync()
{
    var claims = new List<Claim>();
    claims.Add(new Claim(ClaimTypes.Name, "UserName"));
    claims.Add(new Claim(ClaimTypes.Email, "[email protected]"));
    var id = new ClaimsIdentity(claims,
                                DefaultAuthenticationTypes.ApplicationCookie);

    var ctx = Request.GetOwinContext();
    var authenticationManager = ctx.Authentication;
    authenticationManager.SignIn(id);
}

[Authorize]
public ActionResult Welcome()
{
    return View();
}

If you add [Authorize] attribute in the action, then it will redirect only the user name and password is authorize

Function to get user name and password from database

public static UserTable checkUser(string userName, string password)
{
    DemoEntities db = new DemoEntities();
    var query = (from u in db.UserTables
                 where u.UserName == userName && u.Password == password
                 select u).FirstOrDefault();
    if(query!=null)
        return query;
    else
        return null;
}
like image 59
Golda Avatar answered Oct 22 '25 02:10

Golda