package com.zlz.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;import javax.servlet.http.HttpSession;//①shiro过滤页面配置步骤一
@Controller
@RequestMapping("product")
public class CRUDController {@RequestMapping("find")public String find(HttpSession session){session.setAttribute("result", "商品查询");return "index";}@RequestMapping("delete")public String delete(HttpSession session){session.setAttribute("result", "商品删除");return "index";}@RequestMapping("update")public String update(HttpSession session){session.setAttribute("result", "商品删修改");return "index";}@RequestMapping("insert")public String insert(HttpSession session){session.setAttribute("result", "商品插入");return "index";}
}
Map map=new LinkedHashMap<>();
//配置规则 不拦截的(放行的)放上面,拦截的放在下面
//find地址表示不需要登录即可访问,注意这个map.put方法里面的第一个参数也可以是网页如/*.html这种
map.put("/product/find", "anon");
//表示除了find以外的地址,都需要登录才行,相当于先执行前面再去执行后面
map.put("/product/*", "user");
sffb.setFilterChainDefinitionMap(map);
@Bean("shiroFilterFactoryBean")public ShiroFilterFactoryBean factoryBean(){ShiroFilterFactoryBean sffb=new ShiroFilterFactoryBean();//设置安全管理器sffb.setSecurityManager(securityManager());//*****设置没有登录时需要跳转的地址sffb.setLoginUrl("/sysUser/unlogin");//**********过滤器配置(过滤器的地址有很多需要配置,因此需要保证顺序)Map map=new LinkedHashMap<>();/*** 一个地址可以执行多个过滤器* 常用的几个过滤器* annon 允许匿名访问(不需要登录)* user 需要登录才能访问(包含记住我)* authc 需要登录(强制登录,本次登录是输入密码进入的,不包含记住我)* logout 注销* roles 必须满足指定的所有角色* perms 必须满足指定的所有权限*///*****规则 不拦截的(放行的)放上面,拦截的放在下面//find地址表示不需要登录即可访问map.put("/product/find", "anon");//表示除了find以外的地址,都需要登录才行,相当于先执行前面再去执行后面map.put("/product/*", "user");sffb.setFilterChainDefinitionMap(map);//检测到没有权限时的跳转地址
// sffb.setUnauthorizedUrl("");return sffb;}
SysUser users = sysUserMapper.findUserByUsername(username);
session.setAttribute("users", users);
//设置需要登录,但没有登录的方法@RequestMapping("unlogin")public String unlogin(RedirectAttributes ra){ra.addFlashAttribute("msg","请先登录");return "redirect:/sysUser/tologin";}
@RequestMapping("tologin")
public String tologin(){return "login";
}
1.3.4 完整的SysUserController类代码如下所示
package com.zlz.controller;import com.zlz.entity.SysUser;
import com.zlz.mapper.SysUserMapper;
import com.zlz.service.ISysUserService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/sysUser")
public class SysUserController {@AutowiredSysUserMapper sysUserMapper;@RequestMapping("login")public String login(String username, String password, RedirectAttributes ra, HttpSession session){//获取当前操作对象Subject subject = SecurityUtils.getSubject();//把用户名、密码存入token中UsernamePasswordToken token=new UsernamePasswordToken(username,password);try {subject.login(token);//*************查到对象后把它放在session里面SysUser users = sysUserMapper.findUserByUsername(username);session.setAttribute("users", users);return "index";} catch (UnknownAccountException e) {ra.addFlashAttribute("msg", "用户名错误");} catch (LockedAccountException e) {ra.addFlashAttribute("msg", "该用户被锁定,请联系管理员解锁");} catch (IncorrectCredentialsException e) {ra.addFlashAttribute("msg", "密码错误");}//重定向地址栏改变,但因为走的是视图解析器,那么他的地址栏是跟随视图解析器里面的地址栏变化的return "redirect:/";}//***************改动的地方@RequestMapping("tologin")public String tologin(){return "login";}//设置需要登录,但没有登录的方法@RequestMapping("unlogin")public String unlogin(RedirectAttributes ra){ra.addFlashAttribute("msg","请先登录");return "redirect:/sysUser/tologin";}}
Title
这是主页!!!!
查询商品添加商品修改商品删除商品
Title
package com.zlz.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;@Controller
public class WelcomeController {//默认访问localhost:8080进入的页面,一个斜杠代表进入你想要其进入的初始页面(默认页面的配置)@RequestMapping("/")public String welcome(){System.out.println("进入了没有");return "index";}
}








下一篇:我应该是懂居家办公的吧?