栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

牛客网项目——项目开发(九):权限控制,数据统计

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

牛客网项目——项目开发(九):权限控制,数据统计

文章目录
  • 1. 权限控制
    • 1.1 pom.xml
    • 1.2 废除原有拦截器
    • 1.3 授权配置
    • 1.4 SecurityConfig
    • 1.5 UserService增加用户权限
    • 1.6 LoginTicketInterceptor
      • 1.6.1 .preHandle
      • 1.6.2 afterCompletion
    • 1.7 LoginController
    • 1.8 CSRF
  • 2. 置顶,加精,删除
    • 2.1 pom.xml 引入
    • 2.2 DAO:DiscussPostMapper
    • 2.3 DiscussPostMapper.xml
    • 2.4 DiscussPostController
    • 2.5 discuss-detail.html
    • 2.6 discuss.js
    • 2.7 SecurityConfig
  • 3. 网站数据统计
    • 3.1 RedisKeyUtil
    • 3.2 DataService
    • 3.3 DataInterceptor
    • 3.4 WebMvcConfig
    • 3.5 DataController
    • 3.6 data.html
    • 3.7 SecurityConfig

1. 权限控制

1.1 pom.xml

	org.springframework.boot
	spring-boot-starter-security

1.2 废除原有拦截器

config.WebMvcConfig 种注释掉两部分

//    @Autowired
//    private LoginRequiredInterceptor loginRequiredInterceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(alphaInterceptor)
            .excludePathPatterns("*.css", "*.js", "*.png", "*.jpg", "*.jpeg")
            .addPathPatterns("/register", "/login");

    registry.addInterceptor(loginTicketInterceptor)
            .excludePathPatterns("*.css", "*.js", "*.png", "*.jpg", "*.jpeg");

//        registry.addInterceptor(loginRequiredInterceptor)
//                .excludePathPatterns("*.css", "*.js", "*.png", "*.jpg", "*.jpeg");

    registry.addInterceptor(messageInterceptor)
            .excludePathPatterns("*.css", "*.js", "*.png", "*.jpg", "*.jpeg");

    registry.addInterceptor(dataInterceptor)
            .excludePathPatterns("*.css", "*.js", "*.png", "*.jpg", "*.jpeg");
}
1.3 授权配置
  1. 定义常量 CommunityConstant
String AUTHORITY_USER = "user";


String AUTHORITY_ADMIN = "admin";


String AUTHORITY_MODERATOR = "moderator";
1.4 SecurityConfig
  1. 继承父类,实现接口
public class SecurityConfig extends WebSecurityConfigurerAdapter implements CommunityConstant {
}
  1. 重写configure(HttpSecurity http),忽略对静态资源的拦截
@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/resources*.css", "*.js", "*.png", "*.jpg", "*.jpeg");
3.5 DataController
  1. 注入属性
  2. 统计页面,路径data,方法又可以get又可以post,因为下面会有post请求转发给他
  3. 统计网站UV,路径"/data/uv",方法post,
    1. 参数一个开始日期一个结束日期一个model
    2. 通过@DateTimeFormat设置格式
    3. 统计结果传给模板
    4. 转发到/data,表明当前整个方法只能把请求处理一半,剩下的交给/data接着处理
  4. 统计活跃用户,逻辑类似
@Controller
public class DataController {

    @Autowired
    private DataService dataService;

    // 统计页面
    @RequestMapping(path = "/data", method = {RequestMethod.GET, RequestMethod.POST})
    public String getDataPage() {
        return "/site/admin/data";
    }

    // 统计网站UV
    @RequestMapping(path = "/data/uv", method = RequestMethod.POST)
    public String getUV(@DateTimeFormat(pattern = "yyyy-MM-dd") Date start,
                        @DateTimeFormat(pattern = "yyyy-MM-dd") Date end, Model model) {
        long uv = dataService.calculateUV(start, end);
        model.addAttribute("uvResult", uv);
        model.addAttribute("uvStartDate", start);
        model.addAttribute("uvEndDate", end);
        return "forward:/data";
    }

    // 统计活跃用户
    @RequestMapping(path = "/data/dau", method = RequestMethod.POST)
    public String getDAU(@DateTimeFormat(pattern = "yyyy-MM-dd") Date start,
                         @DateTimeFormat(pattern = "yyyy-MM-dd") Date end, Model model) {
        long dau = dataService.calculateDAU(start, end);
        model.addAttribute("dauResult", dau);
        model.addAttribute("dauStartDate", start);
        model.addAttribute("dauEndDate", end);
        return "forward:/data";
    }
}
3.6 data.html
  1. 模板,资源路径,js路径,头部复用
  2. 配置UV表单
    1. method="post" th:action="@{/data/uv}"
    2. 处理日期格式
    3. 返回结果th:text="${uvResult}"
  3. DAU表单逻辑类似
3.7 SecurityConfig

管理员才能访问

.antMatchers(
        "/discuss/delete",
        "/data/**"
)
.hasAnyAuthority(
        AUTHORITY_ADMIN
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号