You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[CascadingParameter]privateTask<AuthenticationState>authenticationState{get;set;}protectedoverrideasyncTaskOnInitializedAsync(){varauthState=awaitauthenticationState;varuser=authState.User;if(user.Identity.IsAuthenticated){Console.WriteLine($"Bem-Vindo, {user.Identity.Name}!");if(user.IsInRole("Admin")){Console.WriteLine($"Você faz parte do grupo Admin!");}}else{Console.WriteLine($"Usuário não autorizado!");}}
Controller para model "Categoria" (macoratti.com)
publicclassCategoriaController:ControllerBase{privatereadonlyAppDbContextcontext;publicCategoriaController(AppDbContextcontext){this.context=context;}[HttpGet("todas")]publicasyncTask<ActionResult<List<Categoria>>>Get(){returnawaitcontext.Categorias.AsNoTracking().ToListAsync();}[HttpGet]publicasyncTask<ActionResult<List<Categoria>>>Get([FromQuery]Paginacaopaginacao,[FromQuery]stringnome){varqueryable=context.Categorias.AsQueryable();if(!string.IsNullOrEmpty(nome)){queryable=queryable.Where(x =>x.Nome.Contains(nome));}awaitHttpContext.InserirParametroEmPageResponse(queryable,paginacao.QuantidadePorPagina);returnawaitqueryable.Paginar(paginacao).ToListAsync();}//Buscar e Coletar uma Categoria[HttpGet("{id}",Name="GetCategoria")]publicasyncTask<ActionResult<Categoria>>Get(intid){returnawaitcontext.Categorias.FirstOrDefaultAsync(x =>x.CategoriaId==id);}//Nova Categoria[HttpPost]publicasyncTask<ActionResult<Categoria>>Post(Categoriacategoria){context.Add(categoria);awaitcontext.SaveChangesAsync();returnnewCreatedAtRouteResult("GetCategoria",new{id=categoria.CategoriaId},categoria);}//Editar Categoria[HttpPut]publicasyncTask<ActionResult<Categoria>>Put(Categoriacategoria){context.Entry(categoria).State=EntityState.Modified;awaitcontext.SaveChangesAsync();returnOk(categoria);}//Remover Categoria[HttpDelete("{id}")]publicasyncTask<ActionResult<Categoria>>Delete(intid){varcategoria=newCategoria{CategoriaId=id};context.Remove(categoria);awaitcontext.SaveChangesAsync();returnOk(categoria);}}
publicstaticclassHttpContextExtensions{publicasyncstaticTaskInserirParametroEmPageResponse<T>(thisHttpContextcontext,IQueryable<T>queryable,intquantidadeTotalRegistrosAExibir){if(context==null){thrownewArgumentNullException(nameof(context));}doublequantidadeRegistrosTotal=awaitqueryable.CountAsync();doubletotalPaginas=Math.Ceiling(quantidadeRegistrosTotal/quantidadeTotalRegistrosAExibir);//salvando as informações no header do responsecontext.Response.Headers.Add("quantidadeRegistrosTotal",quantidadeRegistrosTotal.ToString());context.Response.Headers.Add("totalPaginas",totalPaginas.ToString());}}
@code{[Parameter]publicintpaginaAtual{get;set;}=1;[Parameter]publicintQuantidadeTotalPaginas{get;set;}[Parameter]publicintRaio{get;set;}=3;[Parameter]publicEventCallback<int>PaginaSelecionada{get;set;}
List<LinkModel> links;
private async Task PaginaSelecionadaLink(LinkModellink){if(link.Page==paginaAtual){return;}if(!link.Enabled){return;}paginaAtual=link.Page;awaitPaginaSelecionada.InvokeAsync(link.Page);}classLinkModel{publicLinkModel(int page):this(page,true){}publicLinkModel(int page,bool enabled):this(page,enabled,page.ToString()){}publicLinkModel(int page,bool enabled,string text){Page=page;Enabled=enabled;Text=text;}publicstringText{get;set;}publicintPage{get;set;}publicboolEnabled{get;set;}=true;publicboolActive{get;set;}=false;}protectedoverridevoidOnParametersSet(){CarregaPaginas();}privatevoidCarregaPaginas(){links=newList<LinkModel>();//tratar o link da pagina anteriorvarisLinkPaginaAnteriorHabilitado=paginaAtual!=1;varpaginaAnterior=paginaAtual-1;links.Add(newLinkModel(paginaAnterior,isLinkPaginaAnteriorHabilitado,"Anterior"));//trata os links das paginas especificasfor(inti=1;i<=QuantidadeTotalPaginas;i++){if(i>=paginaAtual-Raio&&i<=paginaAtual+Raio){links.Add(newLinkModel(i){Active=paginaAtual==i});}}//trata o link para a proxima paginavarisLinkProximaPaginaHabilitado=paginaAtual!=QuantidadeTotalPaginas;varproximaPagina=paginaAtual+1;links.Add(newLinkModel(proximaPagina,isLinkProximaPaginaHabilitado,"Próximo"));}}
DemoAuthStateProvider
publicclassDemoAuthStateProvider:AuthenticationStateProvider{publicasyncoverrideTask<AuthenticationState>GetAuthenticationStateAsync(){awaitTask.Delay(4000);//indicamos se o usuário esta autenticado e também os seus claimsvarusuario=newClaimsIdentity();returnawaitTask.FromResult(newAuthenticationState(newClaimsPrincipal(usuario)));}}