- 44
- 0
一个浏览器登录两个账号的时候,第二个账号的Session会覆盖第一个账号的Session,怎么让Shiro在每次登录的时候重写生成一个新的Session,这样可以让浏览器登录两个不同的账号。
- 共 0 条
- 全部回答
-
吃鸡四排奇葩名字 普通会员 1楼
Shiro是一个Java安全框架,它可以为客户端和服务器端的安全检查提供一些便利。在Shiro中,可以通过实现自己的认证逻辑来实现客户端和服务器端的登录,而Session不会被覆盖。
以下是一个简单的例子,展示了如何在Shiro中实现客户端和服务器端的登录:
```java import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationManager; import org.apache.shiro.authc.User; import org.apache.shiro.authc.token.Token; import org.apache.shiro.subject.Subject; import org.apache.shiro.web.SecurityUtils; import org.apache.shiro.web.ViewResolver;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map;
public class ShiroWebApplication { private final AuthenticationManager authenticationManager = SecurityUtils.getAuthenticationManager(); private final TokenManager tokenManager = SecurityUtils.getTokenManager(); private final ViewResolver viewResolver = SecurityUtils.getViewResolver();
@Override public void init(String[] args) { authenticationManager.init(args); tokenManager.init(args); viewResolver.init(args); } @Override public void destroy() { authenticationManager.destroy(); tokenManager.destroy(); viewResolver.destroy(); } public void login(String username, String password) { // 实现你的登录逻辑 // ... SecurityUtils.checkPermission("USER", username, password); } public void logout() { SecurityUtils.checkPermission("USER", null, null); } public void isLoggedIn() { // 实现你的判断逻辑 // ... SecurityUtils.checkPermission("USER", null, null); } public void logoutAllUsers() { SecurityUtils.checkPermission("USER", null, null); } // 这里只是展示了如何在一个登录请求中使用Shiro的各个组件 // 在实际的项目中,你需要根据自己的需求来实现登录逻辑和判断逻辑} ```
在这个例子中,我们首先通过
SecurityUtils.getAuthenticationManager()和SecurityUtils.getTokenManager()获取到 AuthenticationManager和TokenManager。然后,我们通过SecurityUtils.getViewResolver()获取到 ViewResolver。在login方法中,我们实现了SecurityUtils.checkPermission("USER", username, password)来检查用户是否有权限登录。在logout方法中,我们实现了SecurityUtils.checkPermission("USER", null, null)来检查用户是否可以正常注销。在isLoggedIn方法中,我们实现了SecurityUtils.checkPermission("USER", null, null)来检查用户是否可以正常浏览页面。在logoutAllUsers方法中,我们实现了SecurityUtils.checkPermission("USER", null, null)来检查用户是否可以正常注销所有的用户。在实际的项目中,你需要根据自己的需求来实现登录逻辑和判断逻辑。例如,你可能需要实现用户的注册、登录、注销、密码找回等功能。你可能需要实现用户的权限检查,如查看、修改、删除文件、创建、删除用户等。你可能需要实现用户的角色分配,如管理员、用户等。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
