`
liuxingguome
  • 浏览: 26092 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

shiro重定向登录后页面

 
阅读更多

Shiro登录成功之后跳到指定URL

 

     通常我们使用shiro,登录之后就会跳到我们上一次访问的URL,如果我们是直接访问登录页面的话,shiro就会根据我们配置的successUrl去重定向,如果我们没有配置successUrl的话,那么shiro重定向默认的/,这个逻辑看shiro的源码就可以知道:

1.shiro会把请求信息保存到session中:

 

2.然后判断是否已经登录,如果没有登录,就会跳到登录页面,用户输入凭证之后就会交给FormAuthenticationFilter这个类来处理;

3.如果登录成功之后就会调用一下方法重定向:

 

其中的issueSuccessRedirect方法如下:

FormAuthenticationFilter出来之后就会交给这个方法处理重定向:

 

    从上面就可以看出,shiro去session中找出之前的保存的请求,如果没有的话就会跳转到我们配置的successUrl!

 

     但是现实中往往有很多需求就是,要求我们登录成功之后要跳到一个固定的页面,通常是跳到首页,那这时候我们应该怎么做呢?

通过查看源码,我发现在shiro的webUtils工具类中有这样一个方法:

 

意思是,获取session中的请求信息,并且清理他;

有了这个方法之后就好办了!

我们可以重写FormAuthenticationFilter的onLoginSuccess方法,具体如下:

 

这样,就实现了在交给shiro处理重定向的时候清理了session中保存的请求信息,这样的话,就可以我们指定的url传递进去,这样就实现了跳转到我们指定的页面;

其次,要把我们定义的过滤器配置一下:

注入:

 

加到shiro过滤器链中:

 

这样使用authc的时候就是我们自定一个过滤器了,如果觉得用同个名字不好也可以自己定义名字!

分享到:
评论

相关推荐

    SSM+shiro登录控制

    如果用户未登录,Shiro会将请求重定向到登录页面。实现这一功能的关键在于配置Shiro的Web过滤器。在`web.xml`中,我们需要定义一个名为`shiroFilter`的过滤器,并配置相应的过滤规则。例如: ```xml ...

    一个简单的springboot整合shiro demo,实现了登录页面拦截,账户密码提交正确放行

    在Shirodemo中,我们可以看到一个名为`loginFilter`的过滤器,它会拦截所有非登录页面的请求,如果用户未登录,就会被重定向到登录页面。这个过滤器的配置通常在`ShiroConfig`类的`filterChainDefinitionMap`中定义...

    shiro+spring+data+session+redis实现单点登录

    1. **用户登录**:用户尝试访问任一系统,如果未登录,则重定向至登录页面。 2. **认证过程**:用户提交登录信息,Shiro进行验证,成功后创建会话并存储用户信息。 3. **会话存储**:Shiro将会话信息(包括用户ID、...

    shiro登录拦截校验demo

    - 如果用户无权访问,Shiro会重定向到错误页面或返回相应的HTTP状态码。 6. **会话管理**: - Shiro可以方便地管理会话,包括创建、读取、更新和删除会话。 - 自动会话超时和跨域会话支持也是Shiro的特性。 7. ...

    cas结合 springmvc shiro 单点登录

    5. **登录与登出流程**:当用户尝试访问受保护的资源时,如果未登录,会被重定向到CAS登录页面。成功登录后,CAS会返回一个票据给客户端,客户端再将此票据提交给Shiro进行验证。验证通过后,用户即可访问受保护资源...

    shiro+ springMVC + Redis+mysql 实现 单点登录

    - 用户访问任意子系统,被重定向到统一的登录页面。 - 用户输入凭证并提交,系统验证成功后,在Redis中创建票据,并将其发送给客户端。 - 客户端保存票据,并在访问其他子系统时携带。 - 子系统检查票据,若有效...

    shiro-单用户登录.zip

    - 在Web应用中,拦截所有需要登录的请求,未登录时重定向到登录页面。 - 登录成功后,Shiro会自动处理Session和Cookie,设置Remember Me功能可选。 5. **会话管理** - Shiro提供会话管理功能,可以监听会话创建...

    使用Shiro实现登录成功后跳转到之前的页面

    在Web应用程序中,一个常见的需求是确保用户登录后能够返回到他们尝试访问的原始页面,尤其是在他们因未登录或会话超时而被重定向到登录页面后。本文将探讨如何使用 Shiro 实现这一功能。 首先,有两种常见的实现...

    SSH+shiro+tiles登录示例

    在登录成功后,我们可能会重定向到一个主页面,这个页面可能由多个Tiles组件组成,如头部、主体内容和页脚。通过 Tiles,我们只需要在主页面JSP中引用这些组件,Tiles会负责合并和渲染它们,从而实现页面的动态组装...

    单点登录sso-shiro-cas-maven

    spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...

    Jeesite 登录login涉及到shiro验证和授权的流程分析

    - 如果用户未登录,Shiro 将自动重定向到配置的 `loginUrl`,在 Jeesite 中,这通常是登录界面。 3. **创建 Token**: - `FormAuthenticationFilter` 会捕获前端提交的 `username` 和 `password`,并使用 `...

    easy-shiro的登录认证、鉴权例子,

    Easy-Shiro拦截器会检查Subject是否存在有效的SessionToken,如果存在则表示用户已经登录,否则将重定向到登录页面。 2. 权限鉴权(Authorization): 授权是确定用户是否有权限执行特定操作的过程。Easy-Shiro...

    shirodemo实现web登陆

    - 用户被重定向到登录后的页面,后续访问会受到 Shiro 的权限控制。 4. **JSP 实现**: - 在 JSP 页面上,可以使用 Shiro 提供的 JSTL 标签库来简化安全控制,例如 `<shiro:principal>` 显示登录用户信息,`...

    Shiro_Demo 一个简单的Shiro验证框架实例

    它首先检查会话中是否存在已登录的Subject,如果不存在,则通过`authc`过滤器将用户重定向到登录页面。用户提交登录信息后,Shiro的`FormAuthenticationFilter`将处理这些信息,并调用自定义Realm的`...

    单点登录CAS与权限管理框架Shiro集成

    2. **重定向至CAS**:如果用户尚未登录,则该应用程序将用户重定向到CAS服务器的登录页面。 3. **用户认证**:用户在CAS服务器上输入用户名和密码进行认证。 4. **服务票据**:认证成功后,CAS服务器返回一个一次性...

    shiro整合cas3.5

    用户在访问需要认证的资源时,会被重定向到 CAS 登录页面,完成登录后,CAS 会将认证结果返回给 Shiro,Shiro 再根据这个结果进行权限控制。这样,既能利用 CAS 的强大身份验证能力,又能结合 Shiro 实现细粒度的...

    基于Shiro 拦截URL,实现权限控制

    6. **处理未授权访问**:当用户没有足够的权限访问资源时,Shiro会自动重定向到一个未授权页面,或者抛出异常。你可以自定义这个行为,比如返回错误信息。 除了基础的URL拦截,Shiro还提供了丰富的API和扩展点,...

    springboot-08-shiro.rar

    在实际项目中,我们可以创建一个简单的登录页面,然后配置Shiro的过滤器链,当用户尝试访问受保护的资源时,如果没有登录,会被重定向到登录页面。登录成功后,根据用户角色和权限分配相应的访问权限。 总结,...

    自定义shiro实现识别ajax请求的拒绝返回json,还是普通返回页面

    默认情况下,当用户无权访问某个资源时,Shiro 会重定向到一个预设的错误页面。但如果我们希望对 AJAX 请求做出特殊处理,例如返回 JSON 格式的错误信息,就需要自定义 Shiro 的 Filter。 1. **自定义 Filter**: ...

    shiro_spring_velocity整合

    - 如果未认证,用户会被重定向到登录页面。 - 认证成功后,Shiro 会从 Realm 获取用户的角色和权限。 - 授权阶段,Shiro 检查用户是否有访问特定资源的权限。 - 根据权限,Velocity 模板显示或隐藏相应的内容。 ...

Global site tag (gtag.js) - Google Analytics