C
C#2y ago
İrşat

HttpContext.Current doesn't exist

I want to use HttpContext.Current.Session.Timeout but it can't find the Current, even after I added using System.Web;
121 Replies
İrşat
İrşat2y ago
So it's removed in net core. What's the alternative?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
then what's the point haha
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
_httpContextAccessor.HttpContext.Current still doesn't exist
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
Okay but HttpContext doesn't have timeout, if it won't come back, why did I add accessor 😄
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
I see. I have this options.IdleTimeout = TimeSpan.FromHours(4); I will give this "TimeSpan.FromDays(30)" if the user checks the "Remember Me" box while loggin in. so I need to use timeout in the controller
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
session builder.Services.AddSession(options => { options.IdleTimeout = TimeSpan.FromHours(4); }); Like this
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
😄 np
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
unless they want it not to
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
well, current was there back then no, i am learning net 6 right now by creating a nice website with it
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
I already have authentication and authorization just adding a remember me function
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
seems a lot more work than just using timeout 😄 maybe there is something i am missing var sessionSettings = new AuthenticationProperties{ ExpiresUtc = DateTime.UtcNow.AddMonths(1) }; I found this let's see how can i use it on my sessions I am looking at SignInAsync right now lol @Thaumanovic I made one. But is it really safe? cookie sounds really really dangerous for authorization
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
even so
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
it became something like this;
public void CreateUserSession(string tokenRaw){
HttpContext.Session.Clear();
var token = _jwtHandler.ReadJwtToken(tokenRaw);
string userId = token.Claims.First(claim => claim.Type == "nameid").Value;
string username = token.Claims.First(claim => claim.Type == "unique_name").Value;
//HttpContext.Session.SetString("userId", userId);
//HttpContext.Session.SetString("username", username);

var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, userId),
new Claim(ClaimTypes.Name, username)
};
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
var sessionSettings = new AuthenticationProperties{
ExpiresUtc = DateTime.UtcNow.AddMonths(1)
};
HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, sessionSettings);
}
public void CreateUserSession(string tokenRaw){
HttpContext.Session.Clear();
var token = _jwtHandler.ReadJwtToken(tokenRaw);
string userId = token.Claims.First(claim => claim.Type == "nameid").Value;
string username = token.Claims.First(claim => claim.Type == "unique_name").Value;
//HttpContext.Session.SetString("userId", userId);
//HttpContext.Session.SetString("username", username);

var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, userId),
new Claim(ClaimTypes.Name, username)
};
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
var sessionSettings = new AuthenticationProperties{
ExpiresUtc = DateTime.UtcNow.AddMonths(1)
};
HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, sessionSettings);
}
Is it alright? How do I reach these values in front end? I mean the cshtml
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
viewmodel? why, and how would I benefit from expire?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
oh I don't want it to take more effort than this it's ridiculous
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
alright, I added is persistent how do I reach the values in cshtml again?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
😄
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
with claims? I am afraid I don't know the syntax User.Claims(..... wait a min string id = User.Claims.First(claim => claim.Type == "nameid").Value; is that how it is?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
well I create it like this; new Claim(ClaimTypes.NameIdentifier, userId), new Claim(ClaimTypes.Name, username)
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
so there shouldn't be guessing correct ones
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
there is only name though 😄
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
I might use this instead if it were more professional work but it already takes a lot of time
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
if(User.Claims.First(claim => claim.Type == "nameid").Value != null) Gave me this "Sequence contains no matching element" FirstOrDefault right sadly user doesn't return anything Enumeration yielded no results
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
it worked but i can't logout 😄 there was a function for that wait
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
if(User.Claims.FirstOrDefault(claim => claim.Type == ClaimTypes.NameIdentifier).Value != null){ userId = User.Claims.FirstOrDefault(claim => claim.Type == ClaimTypes.NameIdentifier).Value; } this keeps giving null error
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
okay I checked if User.Claims.FirstOrDefault(claim => claim.Type == ClaimTypes.NameIdentifier) is null running the app now worked everything works
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
thanks really
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
should I create a seperate jwt I wonder i didn't want to put everything into session. but now it's different that's not really session
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
Alright, a couple of changes and it will be awesome
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
btw, do I really need to check if it's null? i mean why does it even give error just give the string null bruh null check is a pain in the butt
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
yes, then it should give the string null
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
! ?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
oh ok
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
that would be nice. Actually my userid is set to "-1" by default. If that were null, would it make it null? in this case, ?? would be super nice
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
ok I copied already 😄
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
everything works fine too perfect actually i no longer need to manage session and cookie differently oh and i need to know something google keeps asking me to log in everytime i refresh the page how do we make that go away? @Thaumanovic
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
google auth
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
I know the reason. I don't store the jwt google gives me but I don't know how
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
google gives me token, i find the user with the token, i create a new token, i send it to this function...
string userId = token.Claims.FirstOrDefault(claim => claim.Type == "nameid")?.Value;
string username = token.Claims.FirstOrDefault(claim => claim.Type == "unique_name")?.Value;
string userPicture = token.Claims.FirstOrDefault(claim => claim.Type == "actort")?.Value;

var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, userId),
new Claim(ClaimTypes.Name, username),
new Claim(ClaimTypes.Actor, userPicture)
};
string userId = token.Claims.FirstOrDefault(claim => claim.Type == "nameid")?.Value;
string username = token.Claims.FirstOrDefault(claim => claim.Type == "unique_name")?.Value;
string userPicture = token.Claims.FirstOrDefault(claim => claim.Type == "actort")?.Value;

var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, userId),
new Claim(ClaimTypes.Name, username),
new Claim(ClaimTypes.Actor, userPicture)
};
then I pass it to SignInAsync
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
var sessionSettings = new AuthenticationProperties{
IsPersistent = true,
ExpiresUtc = DateTime.UtcNow.AddMonths(1)
};
HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, sessionSettings);
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
var sessionSettings = new AuthenticationProperties{
IsPersistent = true,
ExpiresUtc = DateTime.UtcNow.AddMonths(1)
};
HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, sessionSettings);
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
by what name
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
in here?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
.AspNetCore.Cookies ? or .AspNetCore.Session?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
it has value
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
after this, there will only be registration response messages will be left then i can finally retire 😄
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
.AddGoogle(GoogleDefaults.AuthenticationScheme, googleOptions => { googleOptions.ClientId = configuration["Authentication:Google:ClientId"]; googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"]; });
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
that's called one tap login i guess maybe i can find something on internet or google's docs
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
i think it's about <div id="g_id_onload" data-client_id="" data-login_uri="" data-skip_prompt_cookie=""> </div> this it shows up everytime it sees this and i can show or delete this depending on existence of the cookie
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
<body>
<div id="g_id_onload"
data-client_id="id"
data-ux_mode="popup"
data-callback="googleHandleCredentialResponse">
</div>
</body>
<body>
<div id="g_id_onload"
data-client_id="id"
data-ux_mode="popup"
data-callback="googleHandleCredentialResponse">
</div>
</body>
it's something like this. I put it there, and I link the google javascript file. It takes care of everything if the js sees this div here, it gives me that one tap prompt. But if I won't give the dom this, by checking if cookie exists, then there would be no problems.
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
yup
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
alternatively, look at the link The way that you can set up One Tap to toggle its display status is to specify a cookie with the data-skip_prompt_cookie attribute. If the cookie isn't set, or the value is empty, our client library functions normally. Otherwise, the client library stops running and One Tap won’t display. they already made such a thing 😄
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
yes, I guess
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
there is a dot at the start of it btw does it count? .AspNetCore.Cookies
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
one tap is completely gone lol what did i do wrong
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
i even randomly typed a name yet it doesn't show nah i deleted it, it's still the same sometimes it just doesn't show
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
give me my one tap experience back plz
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
I login, then it shows the prompt great how useful and the name didn't work too wow what a stubborn tech anyway, we learned the gist of it. clock is hitting 6.30 am i should get some sleep
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
thanks once more
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
İrşat
İrşat2y ago
255 message, wow