zoukankan      html  css  js  c++  java
  • shiro的登录验证

    package com.book.app.utils;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import org.apache.shiro.authc.AuthenticationException;
    import org.apache.shiro.authc.AuthenticationInfo;
    import org.apache.shiro.authc.AuthenticationToken;
    import org.apache.shiro.authc.SimpleAuthenticationInfo;
    import org.apache.shiro.authz.AuthorizationInfo;
    import org.apache.shiro.authz.SimpleAuthorizationInfo;
    import org.apache.shiro.realm.AuthorizingRealm;
    import org.apache.shiro.subject.PrincipalCollection;
    import org.springframework.beans.factory.annotation.Autowired;

    import com.book.app.bean.Role;
    import com.book.app.bean.User;
    import com.book.app.service.UserService;
    /**
    *
    * 功能:授权和认证
    * 作者:张
    * 2018年10月18日上午10:16:58
    */
    public class MyRealm extends AuthorizingRealm {
    @Autowired
    private UserService userService;

    @Override
    //登录验证
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
    //获得邮箱
    SimpleAuthenticationInfo info=null;
    String email= (String) token.getPrincipal();
    Map<String,Object> map = new HashMap<String,Object>();
    map.put("email", email);
    User user = login(map);
    if(user != null) {
    info = new SimpleAuthenticationInfo(user.getEmail(),user.getAccount(),getName());
    }
    return info;
    }
    private User login(Map<String, Object> map) {
    return userService.login(map);
    }
    @Override
    //权限分配
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
    SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
    Map<String,Object> map = new HashMap<String, Object>();
    map.put("email", (String)principals.getPrimaryPrincipal());
    User user = login(map);
    if(user !=null) {
    List<String> roleNames= new ArrayList<String>();
    List<Role> listRole = user.getListRole();
    for(Role r:listRole) {
    roleNames.add(r.getrName());
    }
    info.addRoles(roleNames);
    }
    return info;
    }


    }

  • 相关阅读:
    智能合约初体验
    安装solidity遇见的问题——unused variable 'returned'
    Clojure学习笔记(二)——函数式编程
    《Java虚拟机并发编程》学习笔记
    Clojure学习笔记(一)——介绍、安装和语法
    Ubuntu配置pyethapp
    no leveldbjni64-1.8 in java.library.path
    Merkle Patricia Tree (MPT) 树详解
    Ubuntu下配置和编译cpp-ethereum客户端
    conda安装python库出现ssl error
  • 原文地址:https://www.cnblogs.com/manager222/p/10077389.html
Copyright © 2011-2022 走看看