Shiro(3) controller中获取当前登录用户信息

//Shiro controller中获取当前登录用户信息

方式一:

    @RequestMapping(value = "/competitorPageList" ) 
    public String competitorPageList(Model model, ) {

 Long currentUserId = (Long) SecurityUtils.getSubject().getSession().getAttribute("currentUserId"); 
 }

方式二:

 @RequestMapping(value = "/competitorPageList" ) 
    public String competitorPageList(Model model,HttpServletRequest request ) { 
Long currentUserId = (Long) request.getSession().getAttribute("currentUserId");
       }
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
好的,以下是使用shiro框架编写用户登录的示例代码: 在pom.xml文件添加shiro相关的依赖: ```xml <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.5.3</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>1.5.3</version> </dependency> ``` 在web.xml文件配置shiro过滤器,处理登录和权限相关的请求: ```xml <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 在shiro.ini文件配置shiro的相关属性,包括身份验证器、权限验证器等: ```ini [main] # 设置身份验证器 authc = org.apache.shiro.web.filter.authc.FormAuthenticationFilter authc.loginUrl = /login.jsp authc.successUrl = /index.jsp # 设置权限验证器 perms = org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter # 配置角色和权限的对应关系 [roles] admin = * [urls] /login.jsp = authc /logout = logout /index.jsp = authc, perms["admin"] ``` 在登录页面(例如login.jsp),可以使用shiro标签库来进行用户登录的验证: ```jsp <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> <%-- 显示登录错误信息 --%> <c:if test="${not empty shiroLoginFailure}"> <div class="alert alert-danger">${shiroLoginFailure}</div> </c:if> <%-- 显示登录表单 --%> <form method="post" action="<s:url value='/login'/>"> <p> <label>用户名:</label> <input type="text" name="username"/> </p> <p> <label>密码:</label> <input type="password" name="password"/> </p> <p> <button type="submit">登录</button> </p> </form> ``` 在登录请求的处理方法(例如LoginController.java),需要使用shiro来完成用户登录验证的相关操作: ```java @Controller public class LoginController { @GetMapping("/login") public String login() { return "login"; } @PostMapping("/login") public String doLogin(String username, String password) { // 获取当前主体 Subject currentUser = SecurityUtils.getSubject(); // 封装用户名和密码 UsernamePasswordToken token = new UsernamePasswordToken(username, password); // 尝试进行登录验证 try { currentUser.login(token); return "redirect:/index"; } catch (AuthenticationException e) { e.printStackTrace(); return "redirect:/login?error=true"; } } @GetMapping("/logout") public String logout() { // 获取当前主体 Subject currentUser = SecurityUtils.getSubject(); // 尝试进行登出操作 try { currentUser.logout(); } catch (AuthenticationException e) { e.printStackTrace(); } return "redirect:/login"; } } ``` 此处是一个简单的使用shiro框架完成用户登录验证的示例,如果需要进行更为复杂的权限控制,可以在shiro.ini文件配置更多的角色和权限,并在请求处理方法使用shiro标签库进行权限验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值