<bean id="myRealm" class="com.sys.shiro.MyRealm" />

    <bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.MemorySessionDAO">
</bean> <bean id="sessionManager"
class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
<property name="globalSessionTimeout" value="" />
<property name="deleteInvalidSessions" value="true" />
<property name="sessionValidationSchedulerEnabled" value="true" />
<property name="sessionValidationInterval" value="" />
<property name="sessionIdCookie" ref="sessionIdCookie" />
<property name="sessionDAO" ref="sessionDAO"/>
</bean> <!-- Shiro默认会使用Servlet容器的Session,可通过sessionMode属性来指定使用Shiro原生Session -->
<!-- 即<property name="sessionMode" value="native"/>,详细说明见官方文档 -->
<!-- 这里主要是设置自定义的单Realm应用,若有多个Realm,可使用'realms'属性代替 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="cacheManager" ref="shiroCacheManager" />
<property name="realm" ref="myRealm" />
<property name="sessionManager" ref="sessionManager" />
</bean>
/***
* 实现用户登录
*
* @param username
* @param password
* @return
*/
@RequestMapping(value = "doLogin")
public ModelAndView Login(String username, String password) {
ModelAndView mav = new ModelAndView();
User user = loginService.getUser(username);
if (user == null) {
mav.setViewName("login");
mav.addObject("msg", "用户不存在");
return mav;
}
if (!user.getPassword().equals(password)) {
mav.setViewName("login");
mav.addObject("msg", "账号密码错误");
return mav;
}
Collection<Session> sessions = sessionDao.getActiveSessions();
for (Session session : sessions) { System.out.println("登录用户" + session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY));
if (session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY) != null) {
mav.setViewName("login");
mav.addObject("msg", "该用户已登录");
return mav;
}
} /*
* SecurityUtils.getSecurityManager().logout(SecurityUtils.getSubject())
* ;
*/
// 登录后存放进shiro token
UsernamePasswordToken token = new UsernamePasswordToken(user.getName(), user.getPassword());
Subject subject = SecurityUtils.getSubject();
subject.login(token); // 登录成功后会跳转到successUrl配置的链接,不用管下面返回的链接。
mav.setViewName("redirect:home");
return mav;
}

最新文章

  1. 最佳的 14 个免费的响应式 Web 设计测试工具
  2. css3中变形与动画(三)
  3. alias重启终端失效的问题
  4. Axapta 3 COM Connector
  5. [React] Intro to inline styles in React components
  6. 输入输出系统--I/O接口
  7. 做嵌入式,C语言相关的朋友不要错过
  8. python yield,yield from,深浅拷贝
  9. jvm详情——3、JVM基本垃圾回收算法回收策略
  10. CentOS7 linux下yum安装mysql5.7
  11. 在php中调用以及编写接口(转)
  12. border重叠的问题
  13. appium简明教程(10)——控件定位基础
  14. 计算机组成原理实验之CPU组成与指令周期实验
  15. django中templates阅读笔记
  16. 【vim】简介与基本配置
  17. NMON监控linux性能
  18. HTTP下载图片
  19. 了解zookeeper
  20. Kotlin 学习使用之旅(二)

热门文章

  1. 前端学习 -- Css -- 浮动
  2. 解题:HDU 5868 Different Circle Permutation
  3. Oracle表字段类型更改的一个经验
  4. (转)在Eclipse中用TODO标签管理任务(Task)
  5. Python之旅:并发编程之协程
  6. 界面编程之QT的数据库操作20180801
  7. docker 时区设置
  8. redis支持的数据结构
  9. C语言复习---零散补充
  10. SpringJMS解析--使用示例