创建一个maven工程实现简单的登录验证

今天我来说一下创建一个maven工程实现简单的登录验证,首先创建一个maven工程
在这里插入图片描述
选择maven
在这里插入图片描述
填写包名和项目名,然后一路next即可
在这里插入图片描述
applicationContext.xml代码如下

 <!--扫描全部包 除了controller-->
    <context:component-scan base-package="com.sxt" use-default-filters="true">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <context:property-placeholder location="classpath:db.properties"/>
    <!--数据源-->
    <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
    </bean>

    <!--mybatis配置-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.sxt.bean"/>
        <property name="mapperLocations">
            <list>
                <value>classpath*:com/sxt/mapper/*.xml</value>
            </list>
        </property>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.sxt.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

    <!--shiro配置-->
    <bean class="com.sxt.realm.MyRealm" id="myRealm"/>
    <bean class="org.apache.shiro.web.mgt.DefaultWebSecurityManager" id="securityManager">
        <property name="realm" ref="myRealm"/>
    </bean>

    <!--shiro权限配置-->
    <bean class="org.apache.shiro.spring.web.ShiroFilterFactoryBean" id="shiroFilter">
        <property name="securityManager" ref="securityManager"/>
        <property name="loginUrl" value="/index.jsp"/>
        <property name="filterChainDefinitions">
            <value>
                /doLogin=anon
                /cs/**s=anon
                /js/**=anon
                /img/**=anon
                /logout=logout
                /**=authc
            </value>
        </property>
    </bean>

其中anon表示所有人都能访问,/**=auth表示所有人都要登录后才能访问

数据库的配置文件db.properties

在这里插入图片描述
在这里插入图片描述
spring-servlet.xml配置

 <!--扫描controller-->
    <context:component-scan base-package="com.sxt" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <mvc:annotation-driven/>

    <!--视图解析器配置,暂时没用上-->
    <!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
    <!--<property name="prefix" value="/WEB-INF/jsp/"/>-->
    <!--<property name="suffix" value=".jsp"/>-->
    <!--<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>-->
    <!--</bean>-->

    <!--不拦截静态资源-->
    <mvc:resources mapping="/css/**" location="/css/"/>
    <mvc:resources mapping="/easyui/**" location="/easyui/"/>
    <mvc:resources mapping="/js/**" location="/js/"/>
    <mvc:resources mapping="/img/**" location="/img/"/>

定义了一个工具类,用来作为返回类型

package com.sxt.bean;

public class RespBean {

    private Integer status; //响应码

    private String msg; //响应消息

    private Object obj; //可以携带一个任意的数据

    public static RespBean ok(String msg,Object obj){
        return new RespBean(200,msg,obj);
    }

    public static RespBean ok(String msg){
        return new RespBean(200,msg,null);
    }

    public static RespBean error(String msg,Object obj){
        return new RespBean(500,msg,obj);
    }

    public static RespBean error(String msg){
        return new RespBean(500,msg,null);
    }

    public RespBean() {
    }

    public RespBean(Integer status, String msg, Object obj) {
        this.status = status;
        this.msg = msg;
        this.obj = obj;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getObj() {
        return obj;
    }

    public void setObj(Object obj) {
        this.obj = obj;
    }

    @Override
    public String toString() {
        return "RespBean{" +
                "status=" + status +
                ", msg='" + msg + '\'' +
                ", obj=" + obj +
                '}';
    }
}

myRealm继承AuthorizingRealm实现登录认证

在这里插入图片描述

controller层

在这里插入图片描述subject.getSession().getTimeout(20000L);设置密码过期时间

service层
在这里插入图片描述

mapper和xml

在这里插入图片描述在这里插入图片描述
登录成功后就可以访问/user接口,如果没有登录,直接访问/user接口,就会被打回登录界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44868863/article/details/89372319