首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用sessionId或用户名+密码进行Shiro认证?

如何使用sessionId或用户名+密码进行Shiro认证?
EN

Stack Overflow用户
提问于 2018-05-08 06:28:09
回答 1查看 0关注 0票数 0

我在Java认证框架和身份验证工作流方面没有太多经验(只有一些理论知识),所以出于教育目的,我试图为我的HTTP应用程序创建这种类型的身份验证:

  1. 客户帖子登录+密码/login
  2. Shiro通过给定的凭据登录用户。服务器返回客户他的sessionId
  3. 客户请求某种资源/myresource?sessionId=1234567
  4. Shiro通过给定日志记录主题sessionId。然后服务器执行正常的工作流程/myresource(使用Shiro管理方法级访问权限)。

基本上我有这些问题:

  1. 我想我不需要HTTP会话和Servlet会话。Shiro拥有自己的会话管理器,足以满足我的需求。我错了吗?
  2. 为客户提供真正的sessionId,还是应该发送某种sessionToken(已解析为服务器端的sessionId)?
  3. 如何使用sessionId(客户端应在本地存储)登录主题?
  4. 在进行这种认证之前,我还需要了解其他任何事情吗?

提前致谢。

EN

回答 1

Stack Overflow用户

发布于 2018-05-08 16:00:33

我想我不需要HTTP会话和Servlet会话。Shiro拥有自己的会话管理器,足以满足我的需求。我错了吗?

不,你说得对。这就是Shiro真棒的原因。从文档

Shiro的会话支持比这两种[Web容器或EJB有状态会话Bean]机制中的任何一种都更易于使用和管理,并且它可在任何应用程序中使用,无论容器如何。

代码语言:javascript
复制
Subject currentUser = SecurityUtils.getSubject();    
Session session = currentUser.getSession();
session.setAttribute( "someKey", someValue);

为客户提供真正的sessionId,还是应该发送某种sessionToken(已解析为服务器端的sessionId)?

发送普通sessionId是一个坏主意。特别是,如果你通过未加密的网络发送数据。

如何使用sessionId(客户端应在本地存储)登录主题?

你的意思是一旦你有会话ID,你怎么能认证这个主题?你可以简单地从文档中,

代码语言:javascript
复制
Subject requestSubject = new Subject.Builder().sessionId(sessionId).buildSubject();

在进行这种认证之前,我还需要了解其他任何事情吗?

是。

  1. 阅读Shiro的会话管理
  2. 精益MITM攻击
  3. 关于HTTPSSSL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档