powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / identity 2 и claims
22 сообщений из 22, страница 1 из 1
identity 2 и claims
    #38773926
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Ребят у кого то есть полный, живой пример как работать с claims?

Я добавил в IdentityModels:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public string HomeTown { get; set; }
        public System.DateTime? BirthDate { get; set; }//правильно ли я понимаю
        public string ScreenName { get; set; }//что вот это и есть объявление дополнительных полей Claims пользователя? 
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here - почему тогда в дефолтном проекте пишется добавьте клаймс тут?
            return userIdentity;
        }



далее в аккаунт контролере, при логине я должен добавить клаймы...:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
 [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }


            //Проверим подтвержден ли аккаунт у пользователя (email)
             var user = await UserManager.FindAsync(model.Email, model.Password);
             if (user != null)
             {
                 if (user.EmailConfirmed != true)
                 {
                     ModelState.AddModelError("", "Ваш email Не подтвержден! ");
                     return View(model);
                 }
             }


            //далее закоментено то что я нашел в инете (примеры) они не работают, не подходят
            /* AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
             var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
             identity.AddClaim(new Claim(ClaimTypes.Name, user.ScreenName));
             identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
            */
             
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
             var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            switch (result)
            {
                case SignInStatus.Success:                    
                    return RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                    return View("Lockout");
                case SignInStatus.RequiresVerification:
                    return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Не верный логин или пароль.");
                    return View(model);
            } 
        }
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773938
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный код, реализовать-то что хотите?
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773942
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСтранный код, реализовать-то что хотите?

это код из коробки...

единственное добавил, //Проверим подтвержден ли аккаунт у пользователя (email) эту проверку наверно можно немного изящней сделать, но не нашел такого result - имейл не подтвержден.

хочу реализовать клаймы, чтобы определенные мною поля - город, имя и др. хранились в кукисах (это насколько я понял и реализуют клаймы)
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773946
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick, ах вот оно что, прилепили UserManager, потому как не нашли подходящий код.
Это мне и было любопытно

А закомментированный код не работает, т.к. вызывается только в том случае, когда user == null.
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773949
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAнашли подходящий код resultпоправил
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773952
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick, код вестимо отсюда взяли: Create a secure ASP.NET MVC 5 web app with log in, email confirmation and password reset ?
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773953
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вероятно можно использовать такой вариант логина:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
private async Task SignInAsync(ApplicationUser user, bool isPersistent)
{
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
             
    var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
    identity.AddClaim(new Claim(ClaimTypes.Gender, user.Gender));
    identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
    identity.AddClaim(new Claim("age", user.Age.ToString()));
    AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);  
}



чуть позже доберусь до компа проверю
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773954
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANASputnick, код вестимо отсюда взяли: Create a secure ASP.NET MVC 5 web app with log in, email confirmation and password reset ?

ага
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773957
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick, ещё раз: какой алгоритм логина Вы хотите реализовать? Описать словами можете?

Из того, что Вы надёргали куски кода из разных мест и разместили как Вам показалось нужным, ни фига не понятно.
...
Рейтинг: 0 / 0
identity 2 и claims
    #38773960
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANASputnick, ещё раз: какой алгоритм логина Вы хотите реализовать? Описать словами можете?

Из того, что Вы надёргали куски кода из разных мест и разместили как Вам показалось нужным, ни фига не понятно.

регистрация/логин уже реализован: NET Identity with the Entity 2.0 Framework Individual User Accounts
работает отправка токена/ссылки на мыло с последующим подтверждением.... теперь, к этому работающему механизму я хочу добавить технологию claims....
...
Рейтинг: 0 / 0
identity 2 и claims
    #38774035
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SputnickskyANASputnick, ещё раз: какой алгоритм логина Вы хотите реализовать? Описать словами можете?

Из того, что Вы надёргали куски кода из разных мест и разместили как Вам показалось нужным, ни фига не понятно.

регистрация/логин уже реализован: NET Identity with the Entity 2.0 Framework Individual User Accounts
работает отправка токена/ссылки на мыло с последующим подтверждением.... теперь, к этому работающему механизму я хочу добавить технологию claims....Мда, проще надо быть!

Вы хотите таким образом сохранить часть данных о пользователе в куках, чтобы не выбирать из базы?

Это происходит, когда вызывается
Код: c#
1.
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);


И походу Вам придётся переписать Ваш "регистрация/логин".
...
Рейтинг: 0 / 0
identity 2 и claims
    #38774036
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И Вы уверены, что оно Вам надо? Дуамете удобно будет использовать?
...
Рейтинг: 0 / 0
identity 2 и claims
    #38774145
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ Вы уверены, что оно Вам надо? Дуамете удобно будет использовать?

--
ну приятно осознавать что экономиться 3-5 запросов / на 1 пользователя, а если учесть, что проект не сайт визитка а портал с сотнями пользователей, то это особо актуально

в одном проекте на асп 4 использую такую схему:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
 public class BaseController : Controller
    {

        private BusinessLayer.User.User _currentUser;
        public BusinessLayer.User.User CurrentUser
        {
            get
            {
                if (!Request.IsAuthenticated) return null;

                if (_currentUser != null) return _currentUser;

                //try to get it form Session first, if its not there -> create it and put in the session
                if (Session["CurrentUser"] == null)
                {               
                    _currentUser = new UserManager().GetUserByLogin(User.Identity.Name);
                    Session["CurrentUser"] = _currentUser;
                    return _currentUser;
                }
                else //set it to the local var for the multiple references in the calling code and return
                {
                    _currentUser = (BusinessLayer.User.User)Session["CurrentUser"];
                    return _currentUser;
                }
            }

            set
            {
                _currentUser = value;
                Session["CurrentUser"] = _currentUser;
            }
        }

    }



а в мвц 5 та же кухня но из коробки...
...
Рейтинг: 0 / 0
identity 2 и claims
    #38774196
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SputnickskyANAИ Вы уверены, что оно Вам надо? Дуамете удобно будет использовать?

--
ну приятно осознавать что экономиться 3-5 запросов / на 1 пользователя3-5 запросов, чтобы вытащить мыло, возраст и пол... Жёстко.
Sputnickа если учесть, что проект не сайт визитка а портал с сотнями пользователей...Тут я пожалуй промолчу

Вообщем, если Вам удобно перебирать Claims, то не буду отговаривать.
...
Рейтинг: 0 / 0
identity 2 и claims
    #38774320
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВообщем, если Вам удобно перебирать Claims, то не буду отговаривать.

Преимущества Claims становятся отчётливо видны, когда отделяешь аутентификацию/авторизацию от приложения. Например, есть стек слабо связанных между собой веб-приложений, однако требуется централизовать вход и раздачу прав для всех пользователей. Раньше подобные решения пилились на коленке (я таких повидал не мало), сегодня можно всё положить на WIF, и это будет вязаться как с AD, так и с социалками и в принципе с чем угодно вообще.
...
Рейтинг: 0 / 0
identity 2 и claims
    #38774327
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, да да, WIF, все дела.
Особенно, когда "не сайт визитка а портал с сотнями пользователей" и при хранении в Claims таких атрибутов как Age, Gender и Email "экономиться 3-5 запросов" :)
...
Рейтинг: 0 / 0
identity 2 и claims
    #38774331
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, да да, WIF, все дела.
Особенно, когда "не сайт визитка а портал с сотнями пользователей" и при хранении в Claims таких атрибутов как Age, Gender и Email "экономиться 3-5 запросов" :)

Ну честно говоря Age, Gender и Email именно в Claims и передаются. Просто в этом нет смысла, если аутентификация не выносится за борт приложения. Есть некий User из базы данных, у которого есть эти поля, так на кой чёрт эти поля в Claims заталкивать не пойму топикастер пытается порубить дрова утюгом.
...
Рейтинг: 0 / 0
identity 2 и claims
    #38774444
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, он хочет использовать технологию Claims. Технологию :)

Если бы он написал, что использует Windows Identity Foundation, я бы ещё понял. Но тут походу пациент просто сам не знает, что и зачем пишет.
Но пусть пишет, так многие учились.
...
Рейтинг: 0 / 0
identity 2 и claims
    #38778360
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, да да, WIF, все дела.
Особенно, когда "не сайт визитка а портал с сотнями пользователей" и при хранении в Claims таких атрибутов как Age, Gender и Email "экономиться 3-5 запросов" :)

Ну честно говоря Age, Gender и Email именно в Claims и передаются. Просто в этом нет смысла, если аутентификация не выносится за борт приложения.


в ваших глумлениях понял зачем клаймсы, спасибо
...
Рейтинг: 0 / 0
identity 2 и claims
    #38778841
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SputnickВсем привет!

Ребят у кого то есть полный, живой пример как работать с claims?



книга
15 глава
...
Рейтинг: 0 / 0
identity 2 и claims
    #38778886
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О чем топик? Нафига в контроллере гавносессия? Что за лисапед-то?
...
Рейтинг: 0 / 0
identity 2 и claims
    #38778928
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУО чем топик? Нафига в контроллере гавносессия? Что за лисапед-то?А ты не по диагонали читай, тогда поймёшь, что сессия вообще к топику не относится :)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / identity 2 и claims
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]