ahmed_sa Ответов: 1

Как сделать пользовательскую безопасность авторизации на основе базы данных после успешного входа в систему ?


Проблема
Я работаю над использованием проекта asp.net mvc 5 и SQL server 2012 .
Мне нужно сделать пользовательскую систему авторизации на основе базы данных с помощью ado.net технология
так что если кто то может помочь ресурсами или исходным кодом или написать исходный код или шаги
после успешной загрузки логина
Мне нужно перед любой страницей в приложении открыть проверить или проверить роль
если у вас есть true on status в таблице user_roles, то откройте страницу
если нет, то перенаправление на страницу доступа будет запрещено .
так что же мне делать после входа в систему ?
то есть какое действие событие выполнено и где обрабатывать доступ к действию или доступ запрещен

Что я уже пробовал:

Я создаю 3 таблицы
Пользователи
Роли
User_roles (идентификатор пользователя из таблицы пользователей ,roleid от роли стола)
Образец
Таблица User_roles
userid roleid pagenam статус
счета администрации Мишель.аспн правда

[HttpPost]  
        public ActionResult Login(LoginView loginView, string ReturnUrl = "")  
        {  
            if (ModelState.IsValid)  
            {  
                if (Membership.ValidateUser(loginView.UserName, loginView.Password))  
                {  
                    var user = (CustomMembershipUser)Membership.GetUser(loginView.UserName, false);  
                    if (user != null)  
                    {  
                        CustomSerializeModel userModel = new Models.CustomSerializeModel()  
                        {  
                            UserId = user.UserId,  
                            FirstName = user.FirstName,  
                            LastName = user.LastName,  
                            RoleName = user.Roles.Select(r => r.RoleName).ToList()  
                        };  
  
                        string userData = JsonConvert.SerializeObject(userModel);  
                        FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket  
                            (  
                            1, loginView.UserName, DateTime.Now, DateTime.Now.AddMinutes(15), false, userData  
                            );  
  
                        string enTicket = FormsAuthentication.Encrypt(authTicket);  
                        HttpCookie faCookie = new HttpCookie("Cookie1", enTicket);  
                        Response.Cookies.Add(faCookie);  
                    }  
  
                    if (Url.IsLocalUrl(ReturnUrl))  
                    {  
                        return Redirect(ReturnUrl);  
                    }  
                    else  
                    {  
                        return RedirectToAction("Index");  
                    }  
                }  
            }  
            ModelState.AddModelError("", "Something Wrong : Username or Password invalid ^_^ ");  
            return View(loginView);  
        }  

1 Ответов

Рейтинг:
0

RickZeeland

Может быть, это облегченное решение: Облегченная пользовательская аутентификация с помощью ASP.NET сердечник[^]
Однако неясно, можно ли это использовать в сочетании со стандартной аутентификацией ...

Другой идеей может быть использование обработчика для нескольких требований, см.: Авторизация на основе политик в ASP.NET ядро | Microsoft Docs[^]

А вот статья CodeProject: Пользовательская аутентификация и авторизация в системе Asp.Net ядро 2.0[^]