기본 콘텐츠로 건너뛰기

blazor server 쿠키인증 로그인 처리 방법 (무조건 됩니다...

blazor server 쿠키인증 로그인 처리 방법 (무조건 됩니다...

728x90

반응형

blazor로 오면서 인증방법이 많이 까다로워지고 복잡해 져서 로그인처리를 어떻게 해야하나 찾다가 드디어 방법을 찾았습니다.

이것저것 많이 해봤지만 모두 실패 했지만 끝내 잘 되는 방법을 찾았습니다.

성공 방법을 정리할겸 정리해 봅니다. 인증처리 관련 더 공부해야 겠다는 생각이 드네요

blazor가 httpcontext에 접근하는게 많이 까다로워져서 ms에서 제공하는 인증만 써야하는 느낌이네요 많이 아쉽네요..

blazor 쿠키 로그인을 위한 종속성 주입 항목

service.AddHttpContextAccessor(); service.AddScoped(); service.AddHttpClient(); service.AddScoped(); // 쿠키 인증 사용 service.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie();

서비스에 HttpContext를 사용하기 위해 HttpContext종속성을 주입합니다.

그리고 쿠키인증처리를 위한 종속성도 주입합니다.

app.UseAuthentication(); app.UseAuthorization();

그리고 앱에 인증사용을 위한 종속성 주입을 합니다.

그리고 인증을 위한 페이지 2개를 만들어 줄건데 해당 페이지는 UI는 아무것도 없고 오로지 인증 처리만 하고 완료되면 다른 페이지로 Redirect를 할 페이지를 만들어 줍니다.

해당 페이지는 .razor페이지가 아니라 .cshtml페이지로 만들어 줘야 합니다.

그래야 httpcontext에 인증을 할 수 있습니다. (귀찮네요)

//Login.cshtml @page "/Auth/Login" @model MetaMarket.Web.Pages.Auth.LoginModel @{ } //Login.cshtml.cs [AllowAnonymous] public class LoginModel : PageModel { public async Task OnGetAsync(string email, string password) { var claims = new List { new(ClaimTypes.Name, email), new (ClaimTypes.Role, "User") }; var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); var authProperties = new AuthenticationProperties { IsPersistent = true, RedirectUri = this.Request.Host.Value }; await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity), authProperties); return LocalRedirect(Url.Content("~/")); } }

LoginPage 소스 입니다. 다른건 아니고 해당 페이지가 호출되면 claims에 사용자 정보를 만들어 httpcontext에 쿠키로 구워줍니다.

Logout도 비슷합니다.

//Logout.cshtml @page "/Auth/Logout" @model MetaMarket.Web.Pages.Auth.LogoutModel @{ } //Logout.cshtml.cs public class LogoutModel : PageModel { public async Task OnGetAsync() { await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); return LocalRedirect(Url.Content("~/")); } }

반응형

728x90

해당 페이지가 호출되면 HttpContext에서 SignOut을 통해 로그아웃을 하고 메인페이지로 이동합니다.

그럼 이제 로그인, 로그아웃시 저 위의 페이지만 호출해주면 끝납니다. (엄청 쉽네요 ㅠㅠ)

//로그인 처리 /* DB에 접근해서 사용자가 입력한 아이뒤 패스워드가 일치하는지 검증처리 */ /* navigation은 [Inject] protected NavigationManager navigation { get; set; } 이런식으로 주입된 navigation을 사용합니다. */ navigation.NavigateTo($"/Auth/Login?email={Encode(email)}&password;={Encode(password)}",true);

주의) 그리고 주의할것이 path를 입력해 주고 두번째 파라미터에 꼭 true를 줍니다 저걸 안주면 해당 페이지를 못찾는 경우가 있더라구요

로그아웃도 동일합니다.

navigation.NavigateTo("/Auth/Logout", true);

이러면 기본적인 쿠키 로그인, 로그아웃을 잘됩니다.

@Name() 로그아웃 로그인 회원가입

하지만 blazor에서 AuthorizeView를 사용하면 에러가 나올겁니다.

InvalidOperationException: Authorization requires a cascading parameter of type Task. Consider using CascadingAuthenticationState to supply this....어쩌구 저쩌구

이 오류는 간단하게 해결 할 수 있습니다.

app.razor페이지에 태그를 CascadingAuthenticationState추가해 줍니다.

Not found Sorry, there's nothing at this address.

이런식으로 넣으면 해결됩니다.!!

그러면 이제 쿠키인증도 사용하고 AuthorizeView를 활용해 인증전후 레이아웃을 분리 할 수 있습니다.!!

이제 검증해보죠

인증전 브라우저 쿠키 항목들

인증 후

.AspNetCore.Cookies가 추가된게 보이네요!!

아무쪼록 이글이 도움이 되었으면 좋겠네요 전 몇일동안 삽질했습니다. ㅠㅠ

728x90

반응형

from http://heyoonow.tistory.com/79 by ccl(A) rewrite - 2022-01-01 12:25:47

댓글

이 블로그의 인기 게시물

나라배움터 차별 예방 교육 정답

나라배움터 차별 예방 교육 정답 문제1 장애인차별금지법에 따라 차별피해자에게 보장되는 구제조치에 해당하지 않는 것은? 1) 국가인권위원회의 권고 2) 법무부의 시정명령 3) 보건복지부의 임시조치 4) 법원의 손해배상판결 문제정답 : 3 문제2 차별의 예외로서 보편적으로 인정되는 것이 아닌 것은? 1) 진정직업자격 2) 적극적 조치 3) 정당한 괴롭힘 4) 모성보호조치 문제정답 : 3 문제3 헌법에 따라 명시적인 기본권으로 보장되지 않는 것은? 1) 양심의 종교 2) 종교의 자유 3) 학문의 자유 4) 사상의 자유 문제정답 : 4 문제4 출신국가를 이유로 한 차별행위로서 합리적인 이유가 없어 차별에 해당하는 경우는? 1) 크레파스의 특정 색깔을 살색으로 표시하는 경우 2) 에이즈감염을 이유로 백인 여성의 목욕탕 출입을 금지하는 경우 3) 화교학교의 학력을 불인정하는 경우 4) 흑인 남성에 대하여 레스토랑 출입을 금지하는 경우 문제정답 : 3 문제5 재화와 용역의 공급 및 이용에서의 차별행위로서 합리적인 이유가 있어 차별에 해당하지 않는 경우는? 1) 지방자치단체가 운영하는 대학생 기숙사 입사자격에서 검정고시출신을 배제하는 경우 2) 개인택시면허 발급에서 나이에 따라 연장자에게 우선적으로 발급하는 경우 3) 생활이 어려운 학생들에게 학자금을 대출해 주면서 연령을 제한하는 경우 4) 금융기관이 리볼빙 서비스를 제공하면서 특정한 연령에 이른 자를 배제하는 경우 문제정답 : 3 문제6 각국의 차별금지법에 열거된 차별금지사유 가운데 한국사회에 특수한 것은 무엇인가? 1) 인종 2) 장애 3) 학벌 4) 성별 문제정답 : 3 문제7 성희롱에 해당하기 위한 필수적 요건에 해당하지 않는 것은? 1) 직위의 이용 또는 업무관련성 2) 이성간의 관계 3) 성적 굴욕감 또는 혐오감 4) 고용상 불이익 문제정답

고용 노동부 퇴직금 자동 계산기! 내 퇴직금 계산하는 방법은? 퇴직금...

고용 노동부 퇴직금 자동 계산기! 내 퇴직금 계산하는 방법은? 퇴직금... 고용 노동부 퇴직금 자동 계산기! 내 퇴직금 계산하는 방법은? 퇴직금 산정 방법 깔끔 정리! 퇴직금 정산 방법! 퇴직금 자동 계산기 열심히 일한 사람들, 언젠가 회사나 사업장을 떠나게 되면 퇴직금을 받게 되죠 퇴직금은 모두의 권리이자 노동의 가치를 인정해주는 산물입니다. 지난 포스팅에서는 이러한 퇴직금을 받기 위한 퇴직금 지급 규정에 대하여 알아보았는데요 본인이 받아야할 정확한 금액도 반드시 알아야겠죠? 이번 시간엔 퇴직금 정산 방법과 퇴직금 자동 계산기 이용 방법에 대하여 알려드리겠습니다. 1. 퇴직금 계산 방법 1) 퇴직금 정산 방법 퇴직금 산정 방법 퇴직금 정산 방법은 다음과 같습니다. 계속근로기간 1년에 대해 30일분 이상의 평균임금 을 퇴직금으로 지급 "평균 임금"이란 산정 사유 발생 당일 이전 3개월 동안 해당 근로자에게 지급된 임금의 총액을 그 기간으로 나눈 금액, 다만 "평균 임금"이 "통상 임금" 보다 작은 경우 "통상 임금"을 기준 으로 퇴직금 지급함. 퇴직금 = [(1일 평균임금× 30일) × 총 계속근로기간] ÷ 365 2) 퇴직금 지급 기한 근로자가 퇴직한 경우에 그 지급사유가 발생한 날부터 14일 이내에 퇴직금을 지급해야 합니다. 「근로자퇴직급여 보장법」 제9조 3) 예외 _ 육아 휴직, 수습 3개월 이내, 고용주에 의한 휴업, 업무상 부상/질병 휴업, 파업 등 위에 해당하는 기간이 있는 경우, 그 기간과 그 기간 중에 지급된 임금은 평균임금 산정 기간과 임금 총액에서 제외 육아기 근로시간 단축을 한 근로자의 경우, 근로시간 단축 기간을 평균임금 산정기간에서 제외 2. 퇴직금 자동계산기 이용 방법 - 퇴직금 자동 계산기 링크 및 이용 방법 가장 정확한 계산을 원하시면 고용노동부의 퇴직금 계산기, 미리 대략적인 금

차별 예방 교육 답안2

차별 예방 교육 답안2 반응형 문제1 차별금지에 관한 법적 구속력을 가진 국제법규에 해당하지 않는 것은? 1) 세계인권선언 2) 시민적ㆍ정치적 권리에 관한 국제협약 3) 경제적ㆍ사회적ㆍ문화적 권리에 관한 국제협약 4) 아동권리협약 문제정답 : 1 문제2 차별의 근거가 되는 편견에 대한 설명으로 옳지 않은 것은? 1) 비교대상이 동일한데도 합리적인 이유 없이 차등적 대우를 해야 한다고 믿는 선입관을 의미한다. 2) 장애인권리협약과 같은 국제협약에서는 제도의 개선을 강조하고 편견의 제거와 같은 인식의 개선은 언급하지 않는다. 3) 편견과 선입관이 반복되면 고정관념을 형성한다. 4) 편견으로 형성된 고정관념이 여러 사람들에게 각인되어 반복되면 관행을 만든다. 문제정답 : 2 문제3 진정직업자격을 판단하기 위한 요소에 해당하지 않는 것은? 1) 직무의 성격 2) 차별행위와 필수적 관계 3) 불가피성 4) 정당한 편의 문제정답 : 4 문제4 신체조건을 이유로 한 차별행위로서 합리적인 이유가 있어 차별에 해당하지 않는 경우는? 1) 한 쪽 눈이 보이지 않는 사람에게 제1종 운전면허의 취득을 금지하는 경우 2) 경찰채용을 위한 경찰청의 신체조건보다 엄격한 신체조건을 경찰대학 입시에서 요구하는 경우 3) 스튜어스의 응시조건으로서 일정한 신장을 요구하는 경우 4) 결혼정보회사에 가입하는 조건으로 일정한 신장을 요구하는 경우 문제정답 : 1 문제5 간접차별의 요건에 해당하지 않는 것은? 1) 외관상 중립적인 기준 2) 불리한 결과 3) 합리적인 이유 없음 4) 의도적인 차별 문제정답 : 4 문제6 교육영역에서의 차별행위로서 합리적인 이유가 있어 차별에 해당하지 않는 경우는? 1) 임신한 학생에게 전학이나 자퇴를 강요하는 경우 2) 군사학과에서 병역의무가 있는 남학생에게는 장학금을 지급하고 여학생에게는 장학금을 지급하지 않는 경우 3)