기본 콘텐츠로 건너뛰기

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

댓글

이 블로그의 인기 게시물

구약)출애굽기 10장

구약)출애굽기 10장 구약)출애굽기 10장 1절 - 여호와께서 모세에게 이르시되 바로에게로 들어가라 내가 그의 마음과 그의 신하들의 마음을 완강하게 함은 나의 표징을 그들 중에 보이기 위함이며 2절 - 네게 내가 애굽에서 행한 일들 곧 내가 그들 가운데에서 해앟ㄴ 표징을 네 아들과 네 자손의 귀에 전하기 위함이라 너희는 내가 여호와인 줄을 알리라 3절 - 모세와 아론이 바로에게 들어가서 그에게 이르되 히브리 사람의 하나님 여호와께서 말씀하시기를 네가 어느 때까지 내 앞에 겸비하지 아니하겠느냐 내 백성을 보내라 그들이 나를 섬길 것이라 4절 - 네가 만일 내 백성 보내기를 거절하면 내일 내가 메뚜기를 네 경내에 들어가게 하리니 5절 - 메뚜기가 지면을 덮어서 사람이 땅을 볼 수 없을 것이라 메뚜기가 네게 남은 그것 곧 우박을 면하고 남은 것을 먹으며 너희를 위하여 들에서 자라나는 모든 나무를 먹을 것이며 6절 - 또 네 집들과 네 모든 신하의 집들과 무든 애굽 사람의 집들에 가득하리니 이는 네 아버지와 네 조상이 이 땅에 있었던 그 날로부터 오늘까지 보지 못하였던 것이리라 하셨다 하고 돌이켜 바로에게서 나오니 7절 - 바로의 신하들이 그에게 말하되 어느 때까지 이 사람들이 우리의 함정이 되리이까 그 사람들을 보내어 그들의 하나님 여호와를 섬기게 하소서 왕은 아직도 애굽이 망한 줄을 알지 못하시나이까 하고 8절 - 모세와 아론을 바로에게로 다시 데려오니 바로가 그들에게 이르되 가서 너희의 하나님 여호와를 섬기라 갈 자는 누구 누구냐 9절 - 모세가 이릐되 우리가 여호와 앞에 절기를 지킬 것인즉 우리가 남녀 노소와 양과 소를 데리고 가겠나이다 10절 - 바로가 그들에게 이르되 내가 너희와 너희의 어린 아이들을 보내면 여호와가 너희와 함께 함과 같으리라 보라 그것이 너희에게는 나쁜 것이니라 11절 - 그렇게 하지 말고 너희 장정만 가서 여호와를 섬기라 이것이 너희가 구하는 바니라 이에 그들이 바로 앞에서 쫒겨나니라 12절 ...

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

나라배움터 차별 예방 교육 정답 문제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) 국가인권위원회의 권고 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) 고용상 불이익 문제정답 ...