gpt4 book ai didi

java - 如何在请求期间检查 JAAS 中的授权

转载 作者:行者123 更新时间:2023-11-29 05:58:13 26 4
gpt4 key购买 nike

我已经实现了 JAAS 提供的表单例份验证。由于我将所有页面作为模板处理,因此每次都必须评估代码。因此,当用户直接访问 /login 时,doGet 请求必须处理它并处理登录模板。

现在我想在登录成功后重定向到主页面。当用户再次选择 /login 时,他/她应该被重定向到主页。

因此,我需要在 doGet 请求期间知道用户是否已获得授权,也许还需要了解哪种身份验证。我该如何检查?还是这个成语有误?


或者这是由 request.isUserInRole(String role) 完成的?既然它同时进行身份验证和授权?

最佳答案

您可以通过检查 HttpServletRequest#getRemoteUser() 来检查用户是否已登录(用户名)或 #getUserPrincipal() (关联的 Princpal 对象)返回null

所以,例如在 /login servlet 的 doGet() 中,您可以这样做:

if (request.getRemoteUser() != null) {
// Already logged in, so redirect to some main page.
response.sendRedirect(request.getContextPath() + "/main");
return;
}

// ...

#isUserInRole()仅检查登录用户是否具有某些特定角色,这通常仅用于限制特定角色的某些页面或页面部分。因此,除非您有一个由每个 用户共享的一般角色,否则这没有用。

您可能只想添加一条消息来通知最终用户为什么他/她被重定向以及以其他用户身份再次登录的正确方法是什么。例如。 “您已经登录了。如果您需要以其他用户身份登录,请先到注销页面。”左右在根据某些重定向参数有条件地显示的主页中。

关于java - 如何在请求期间检查 JAAS 中的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11196218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com