| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- package com.key.common.plugs.security;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.UUID;
- import javax.servlet.http.HttpServletRequest;
- import com.key.common.base.entity.User;
- import com.key.common.base.service.AccountManager;
- import com.key.common.utils.security.DigestUtils;
- 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.authc.UsernamePasswordToken;
- import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
- 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.apache.shiro.subject.SimplePrincipalCollection;
- import org.springframework.beans.factory.annotation.Autowired;
- import com.key.common.utils.web.Struts2Utils;
- public class ShiroDbRealm extends AuthorizingRealm {
- @Autowired
- protected AccountManager accountManager;
- public ShiroDbRealm() {
- setCredentialsMatcher(new HashedCredentialsMatcher("SHA-1"));
- }
- /**
- * 认证回调函数,登录时调用.
- */
- @Override
- protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
- UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
- // User user = accountManager.findUserByLoginName(token.getUsername());
-
- //根据loginToken 看能不查到当前token token有效期就1分钟
-
- String tokenPassword=new String(token.getPassword());
- User user = accountManager.findUserByLoginNameOrEmail(token.getUsername());
- //user.getStandardLock()==1
- if (user != null && user.getStatus().intValue()!=0 && !user.getLoginName().endsWith("@chacuo.net")) {
- return new SimpleAuthenticationInfo(user.getLoginName(), user.getShaPassword() , getName());
- } else {
- return null;
- }
- }
- /**
- * 授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用.
- */
- @Override
- protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
- String username = (String) principals.fromRealm(getName()).iterator().next();
- // User user = accountManager.findUserByLoginName(username);
- User user = accountManager.findUserByLoginNameOrEmail(username);
- if (user != null && "1".equals(user.getId())) {
- SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
- info.addRole("admin");
- return info;
- } else {
- return null;
- }
- }
- /**
- * 更新用户授权信息缓存.
- */
- public void clearCachedAuthorizationInfo(String principal) {
- SimplePrincipalCollection principals = new SimplePrincipalCollection(principal, getName());
- clearCachedAuthorizationInfo(principals);
- }
-
- }
|