创建一个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接口,就会被打回登录界面