Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Automatically logout after refreshing page

$
0
0

I'm trying to develop a basic level authorize system but it's logouts after refreshing the page and I don't know why. I'm kind of a beginner so I'm building a minimal project for my company and here I'm stuck at. I can login successfully and my roles are working fine but I didn't understand why that logout after refreshing the page.

using Microsoft.AspNetCore.Authentication;using Microsoft.AspNetCore.Authentication.Cookies;using Microsoft.AspNetCore.Components.Authorization;using ProtaTestTrack2.Services;using System.Security.Claims;using System.Threading.Tasks;public class CustomAuthenticationStateProvider : AuthenticationStateProvider{    private readonly UserService _userService;    private readonly IHttpContextAccessor _httpContextAccessor;    private ClaimsPrincipal _currentUser;    public CustomAuthenticationStateProvider(UserService userService, IHttpContextAccessor httpContextAccessor)    {        _userService = userService;        _httpContextAccessor = httpContextAccessor;        _currentUser = new ClaimsPrincipal(new ClaimsIdentity());    }    public async Task MarkUserAsAuthenticated(string username, string role)    {        var identity = new ClaimsIdentity(new[]        {            new Claim(ClaimTypes.Name, username),            new Claim(ClaimTypes.Role, role)        }, CookieAuthenticationDefaults.AuthenticationScheme);        _currentUser = new ClaimsPrincipal(identity);        var authProperties = new AuthenticationProperties        {            IsPersistent = true,            ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(60)        };        _ = Task.Run(async () =>        {            await _httpContextAccessor.HttpContext.SignInAsync(                CookieAuthenticationDefaults.AuthenticationScheme,                _currentUser,                authProperties);        });        NotifyAuthenticationStateChanged(Task.FromResult(new AuthenticationState(_currentUser)));    }    public async Task MarkUserAsLoggedOut()    {        _currentUser = new ClaimsPrincipal(new ClaimsIdentity());        await _httpContextAccessor.HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);        NotifyAuthenticationStateChanged(Task.FromResult(new AuthenticationState(_currentUser)));    }    public override Task<AuthenticationState> GetAuthenticationStateAsync()    {        var user = _httpContextAccessor.HttpContext.User;        if (user.Identity.IsAuthenticated)        {            _currentUser = user;        }        return Task.FromResult(new AuthenticationState(_currentUser));    }    public async Task<string> GetUsernameAsync()    {        return _currentUser.Identity.IsAuthenticated ? _currentUser.Identity.Name : null;    }}
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><base href="/" />  <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet" /><link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" />  <link rel="icon" type="image/ico" href="favicon.ico" /><HeadOutlet @rendermode="InteractiveServer" /></head><body><Routes @rendermode="InteractiveServer"/><script src="_framework/blazor.web.js"></script><script src="_content/MudBlazor/MudBlazor.min.js"></script></body></html>

I tried to create new auth templates of mudblazor but didn't work as well.


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>