package com.dz.service;
import com.dz.bean.guanli;
import java.util.Vector;
public class DL {
private DL(){
this.guanliDl= new Vector<guanli>();
}
private static DL dl;
public static synchronized DL getDl(){
if(dl==null){
dl=new DL();
}
return dl;
}
private Vector<guanli> guanliDl;
public void adduser(guanli g1){
this.guanliDl.add(g1);
}
public Boolean wo(String name){
guanli g1 =new guanli();
g1.setAname(name);
Boolean b=true;
for (int i = 0; i < this.guanliDl.size(); i++) {
if(this.guanliDl.get(i).equals(g1)){
b=false;
break;
}
}
if(b){
return true;
}else {
return false;
}
}
}
package com.dz.config;
import com.dz.bean.guanli;
import com.dz.dao.guanliMapper;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import javax.annotation.Resource;
import java.util.List;
public class UserRealm extends AuthorizingRealm {
@Resource
private guanliMapper guanliMapper;
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken token1 = (UsernamePasswordToken) token;
guanli g1=new guanli();
g1.setAname(token1.getUsername());
g1.setApsw(String.valueOf(token1.getPassword()));
List<guanli> list = guanliMapper.login(g1);
if(null == list || list.size() ==0)
{
return null;
}
return new SimpleAuthenticationInfo("",token1.getPassword(),"");
}
}
package com.dz.config;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.LinkedHashMap;
import java.util.Map;
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("getdefaultWebSecurityManager") DefaultWebSecurityManager defaultWebSecurityManager){
ShiroFilterFactoryBean bean=new ShiroFilterFactoryBean();
bean.setSecurityManager(defaultWebSecurityManager);
Map<String,String> filteMap=new LinkedHashMap<>();
filteMap.put("/index","authc");
bean.setFilterChainDefinitionMap(filteMap);
bean.setLoginUrl("/");
return bean;
}
@Bean(name ="getdefaultWebSecurityManager" )
public DefaultWebSecurityManager getdefaultWebSecurityManager(@Qualifier("getUserRealm") UserRealm userRealm){
DefaultWebSecurityManager defaultWebSecurityManager=new DefaultWebSecurityManager();
defaultWebSecurityManager.setRealm(userRealm);
return defaultWebSecurityManager;
}
@Bean(name = "getUserRealm")
public UserRealm getUserRealm(){
return new UserRealm();
}
}
package com.dz.control;
import com.alibaba.fastjson.JSONObject;
import com.dz.bean.guanli;
import com.dz.dao.guanliMapper;
import com.dz.service.DL;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class login {
@RequestMapping("/islogin")
public String islogin(HttpServletRequest request, HttpServletResponse response) {
String us = request.getParameter("username");
String ps = request.getParameter("password");
System.out.println("账号" + us + "密码" + ps);
request.getSession().setAttribute("us", us);
try {
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(us, ps);
subject.login(token);
DL dl=DL.getDl();
Boolean b=dl.wo(us);
if(b){
guanli g1=new guanli();
g1.setAname(us);
g1.setApsw(ps);
dl.adduser(g1);
return "index";
}else {
request.setAttribute("asd", "已有人登录");
return "login";
}
} catch (UnknownAccountException e) {
request.setAttribute("asd", "用户名/密码 错误");
return "login";
} catch (IncorrectCredentialsException e) {
request.setAttribute("asd", "密码错误");
return "login";
}
}
}