@Thomas Broyer  
i implement the methods according to you but again occur the problem as 
below
1)if i login inside the incognito window or private window i  see in all 
tabs or all windows session id will be same and if login user A then login 
user B on same browser then user A is logout automatically and if user C 
login then user B automatically logout so private window methodology not 
work correctly 
2)inside the Firefox containers for multi user  ,occur the same problem 
means if user A login and then user B login then user A  logout 
automatically and if i use the different modules of the Firefox containers 
means if user A login inside the work window and then ,user B login inside 
the shopping window and user C login inside  banking window then it work 
correctly but if all users login on  any one window then previous users 
logout automatically and i checked all tabs session id is same so through 
this approach again i not achieved my desired output 

i provide the code of my flask app so please read and then provide the 
suggestion  
i want   to login all users on same browser  on same system at same time 
but previous users not logout although user it self logout 
code of flask app is below
# Flask-Login Configuration
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'

# User model
class User(UserMixin):
def __init__(self,user_id, username, password ,user_type):
self.id=user_id
self.username = username
self.password = password
self.user_type = user_type
def get_id(self):
return str(self.id) # Convert to string if necessary

@login_manager.user_loader
def load_user(user_id):
user_data =collection_user.find_one({'user_type': user_id})
if user_data:
return User(user_id=user_data['user_type'],username=user_data['user_type'], 
password=user_data['password'],user_type=user_data['user_type'])
return None
#LOGIN MODULE 
# Route for user login
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
print('inside the login')
user_type = request.form.get('user_type')
email = request.form.get('email')
password = request.form.get('password')
print('value of user type->>>', user_type)
print('value of email->>>', email)
print('value of password->>>', password)

user=collection_user.find_one({'user_type':user_type,'email':email,
'password':password})
print('value of user is->>>',user)
if user:
user_obj=load_user(user_type)
print('value of user_obj is-->>',user_obj)
login_user(user_obj)
return redirect(url_for('dashboard'))
return render_template('login.html', error='Invalid credentials,plz enter 
valid id or password')
print('direct out of the if condition')

return render_template('login.html', error=None)

#Dashboard Route
@app.route('/dashboard')
@login_required
def dashboard(): 
if current_user.is_authenticated:
user_type=current_user.user_type
print('value user_type is-->>',user_type)
if user_type:
print('inside the if condition of user_type')
if user_type == 'admin':
print('inside the admin user')
return redirect(url_for('home_page'))
elif user_type == 'indenter':
print('inside the indenter user')
return redirect(url_for('indenter_dashboard'))
elif user_type == 'purchaser':
print('inside the purchaser user')
return redirect(url_for('purchaser_dashboard'))
elif user_type == 'store':
print('inside the store user')
return redirect(url_for('store_dashboard'))
#Handle if user not found
return redirect(url_for('login'))
# Logout Session
@app.route("/logout")
@login_required
def logout():
#Clear session data for current user 
session.clear()
session.pop('user_type',None)
logout_user()
response = make_response(redirect(url_for("login")))
# response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, 
max-age=0'
# response.headers['Pragma'] = 'no-cache'
# response.headers['Expires'] = '-1'
return response
#Route for home page/admin page
@app.route('/home_page')
@login_required
def home_page():
print('inside the home function')
if current_user.is_authenticated and current_user.user_type== 'admin':
print('inside the home function')
response = make_response(render_template('home_page.html', user_email=
current_user.user_type))
# response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, 
max-age=0'
# response.headers['Pragma'] = 'no-cache'
# response.headers['Expires'] = '-1'
return response
return redirect(url_for('login')) 


# Route for indenter dashboard 
@app.route('/indenter_dashboard')
@login_required
def indenter_dashboard():
print('inside the indenter_dashboard function')
if current_user.is_authenticated and current_user.user_type== 'indenter':
print('inside the indenter dashboard function')
response = make_response(render_template('indenter_dashboard.html', 
user_email=current_user.user_type))
# response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, 
max-age=0'
# response.headers['Pragma'] = 'no-cache'
# response.headers['Expires'] = '-1'
return response
return redirect(url_for('login')) 


# Route for purchaser dashboard
@app.route('/purchaser_dashboard')
@login_required
def purchaser_dashboard():
print('inside the purchaser_dashboard function')
if current_user.is_authenticated and current_user.user_type== 'purchaser':
print('inside the purchaser dashboard function')
response = make_response(render_template('purchaser_dashboard.html', 
user_email=current_user.user_type))
# response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, 
max-age=0'
# response.headers['Pragma'] = 'no-cache'
# response.headers['Expires'] = '-1'
return response
return redirect(url_for('login')) 

# Route for store dashboard
@app.route('/store_dashboard')
@login_required
def store_dashboard():
print('inside the store_dashboard function')
if current_user.is_authenticated and current_user.user_type== 'store':
print('inside the store_dashboard function')
response = make_response(render_template('store_dashboard.html', user_email=
current_user.user_type))
# response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, 
max-age=0'
# response.headers['Pragma'] = 'no-cache'
# response.headers['Expires'] = '-1'
return response
return redirect(url_for('login')) 


On Thursday, April 4, 2024 at 7:52:15 PM UTC+5:30 Thomas Broyer wrote:

> On Thursday, April 4, 2024 at 2:21:36 PM UTC+2 [email protected] 
> wrote:
>
> ok, thanks again @Thomas Broyer for provide me the information on session 
> and cookies
>
> and also read this below conditions and let me this working is wrong or 
> right ......
>
> 1)in current situation in my flask app multiple user login possible but 
> browsers also have different  means one user login on one browser and if 
> users are same on same browser then it works properly but if user is same 
> and again same user login then generate new session id inside the cookies 
> and this session id also replace in  all tabs of the same browser where 
> this specific user already login
>
>
> That's right, which is why you'd want your app to somehow detect when it 
> loads that a session already exists and can just be reused, rather than 
> showing the login screen and forcing the creation of a new session, 
> replacing the previous one and possibly impacting other tabs.
>
> 2)i wants to test my flask app in same browser but i wants to different 
> user login and if  new user login then previous user don't logout 
> automatically  
>
>
> Use incognito/private mode. In Firefox you can use "containers" to, well, 
> containerize, tabs with different sets of cookies: 
> https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/
>  
>
> so read all above conditions or doubts and then provide me suggestions
> On Thursday, April 4, 2024 at 3:13:20 PM UTC+5:30 Thomas Broyer wrote:
>
> Not sure what more I can say.
>
>
>    - "Server-side sessions" use cookies, which are global to the whole 
>    browser (not per-tab), so if you want per-tab sessions you have to find 
>    another approach than "server-side sessions"
>    - Per-tab sessions are not what most sites/apps do, so users will 
>    likely not expect it (and most users login with a single account at a time 
>    anyway, so it's mostly a non-issue). In other words, you want to do 
>    something that people are not accustomed to. More clearly: don't do it 
>    (unless you have very, very, very good reasons to)
>    - What you should do though (that you probably don't do nowadays, 
>    which lead you to discover that behavior of your app) is to somehow check, 
>    when your app loads, whether there's already a session or not (generally, 
>    make a request to the server to get the user's information –username, 
> etc.– 
>    and handle errors so you display the login form when unauthenticated). 
>    Opening your app in multiple tabs (after authenticating in one tab) 
>    shouldn't show you the login form.
>
>
>
> On Thursday, April 4, 2024 at 9:55:24 AM UTC+2 [email protected] 
> wrote:
>
> thanks @Thoms  Broyer
> can you elaborate more that can help me and clear what you wants to say
>
> On Wednesday, April 3, 2024 at 6:02:06 PM UTC+5:30 Thomas Broyer wrote:
>
> On Wednesday, April 3, 2024 at 1:16:58 PM UTC+2 [email protected] 
> wrote:
>
> Hello everyone,
> In my flask application there is some issue related to login system  and 
> issue as below         1)in  flask app there are multiple users(roles) like 
> admin ,indentor.....etc. and the problem is that if any user login on same 
> browser where already any user logged in then previous user automatically 
> logout and recent user logging successfully 
> 2)if browser are different and users also different means only one user 
> login through one browser then there is no problem it works properly 
> 3)if browser is same and user also same then same name user login 
> successfully but previous same user session id change 
> 4)in  any browser with same web page who running  on local server  all 
> tabs session id same inside the cookies it means on same browser all tabs 
> session id same for same web application 
>
> i current situation i face the issue related to session management ,and 
> issue is that only one user login at same time with same browser
>
>
> This is just how the web works.
>
> If you don't want this, then you can't use cookies to maintain your 
> session (e.g. generate some access token on the server that you send back 
> to the client and have it send it in a header with each request to the 
> server; the client could possibly save it in sessionStorage to store the 
> token so it survives a page refresh while segregating it to the current tab)
> But note that I believe most users expect that middle-clicking a link (or 
> right-click → open in new tab) will preserve their session, and because 
> every web app out there shares the session across all tabs they won't even 
> try to login with a different user in a different tab (they'll expect that 
> their session is "detected" and reused, without seeing a login screen)
>
> Also, BTW, this is not GWT-related (in that, it applies whether you use 
> GWT or not).
>
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit/1c7c1e48-b3e1-4d02-9f85-70a61aa3a440n%40googlegroups.com.

Reply via email to