- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
foreach (Admin _admin in _admins.Where(a => a.Login == _login))
{
if (_admin.Password == _password)
{
SessionObj = new Al2AllAuth
{
AccessId = _admin.Type,
Ename = _admin.Name,
Whoid = _admin.Id
};
var _type = (AdminTypes) _admin.Type;
switch (_type)
{
case AdminTypes.FirstType:
return RedirectToAction(c_adminActionName, c_userControllerName);
case AdminTypes.SecondType:
if (string.IsNullOrEmpty(model.Page) || string.IsNullOrEmpty(model.Uid))
throw new ArgumentException(InternalResources.EmptyPageOrUid, "model");
return RedirectToAction(model.Page, new { uid = model.Uid });
default:
break;
}
}
else
{
return RedirectToAction(_errorActionName);
}
}
Лямбда в foreach очен смутила... Зачем?
bormand 11.04.2014 07:45 # +1
guest 11.04.2014 08:40 # 0
bormand 11.04.2014 08:43 # +3
И даже если там хеш - то без соли. Ибо соль надо как-то извлекать из записи о юзере, а тут этого не делают.
P.S. Ну разве что там не рандомная соль, а нечто на основе логина.
Vindicar 11.04.2014 07:52 # −1
.where() видимо возвращает коллекцию элементов, для которых лямбда вернула истину, а потом по этой коллекции итерируемся.
А вот строка 3 - это да.
planaric 24.04.2014 11:51 # +1
И никакого цикла вообще не нужно.
bormand 24.04.2014 11:53 # +2
admin 123456
admin 654321
guest 11.04.2014 07:57 # −1
Эта такая ловушка для того чтобы код был плохо модифицируемый. Вот захочется написать if(...) break; И всё. Будете кидать исключение. А темболее if(...) continue; написать не получится
bormand 11.04.2014 08:29 # +1
> if(...) continue; написать не получится
Какого хуя лешего в базе делают два админа с одинаковым логином? :)
Этот foreach тут по сути как if юзается. И его тело исполняется по-любому или один раз, или вообще ни разу...
TauSigma 11.04.2014 16:39 # +2
Уже пару раз наталкивался на то, что коллегам лень перегрузки глянуть.
bormand 11.04.2014 08:36 # 0
guest 11.04.2014 09:30 # 0
.where() возвращает коллекцию, удовлетворяющую условию, потом уже с ней работает foreach
guest 11.04.2014 09:31 # 0
guest 11.04.2014 14:44 # 0
bormand 11.04.2014 15:19 # +2
Но на самом деле - всем пофиг. Раз не юзают базу или хотя бы что-то более шустрое чем последовательный поиск - админов там по пальцам сосчитать можно, и никакого тормоза само собой не будет :)
Lokich 11.04.2014 15:19 # +2
cyperh 12.04.2014 11:28 # 0
читаем документацию, если тебе будет так понятнее, то возвращается новая коллекция
TauSigma 13.04.2014 14:11 # 0
TauSigma 13.04.2014 14:29 # 0
TauSigma 13.04.2014 15:01 # 0
Lokich 14.04.2014 12:49 # 0
проекция возвращается из Where, а дальше по ней уже работает foreach, т.к. она реализует итератор.
Smekalisty 11.04.2014 14:39 # 0
TauSigma 11.04.2014 16:41 # 0
Мистер Хэнки 11.04.2014 17:01 # +2