| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace App\Http\Middleware;
- use App\Exceptions\MemberAuthException;
- use App\Models\Member;
- use App\Servers\RedisDataServer;
- use Closure;
- class MemberAuthMiddleware
- {
- private $noAuth=[
- 'member.register',
- 'member.index',
- 'member.login',
- 'common.location',
- 'common.file',
- 'common.js',
- 'common.send',
- 'news.banner',
- 'news.notices',
- 'news.notice',
- 'news.about_us',
- 'common.start',
- 'common.app_version',
- 'common.privacy_info',//获取隐私协议
- ];
- /**
- * Handle an incoming request.
- *
- * @param \Illuminate\Http\Request $request
- * @param \Closure $next
- * @return mixed
- */
- public function handle($request, Closure $next)
- {
- //验证会员授权信息
- $clientRoute = request()->route()->getName();
- if (!in_array($clientRoute, $this->noAuth)) {
- $m_id = $request->input('m_id','5');
- $token = $request->input('token','04c97f7287eb8242ca0fc3cc41b7b555');
- if (empty($m_id) || empty($token) || !is_numeric($m_id)) {
- throw new MemberAuthException('缺少认证信息', 401);
- }
- $member = RedisDataServer::creatServer()->getData( 'login_' . $m_id, 'json');
- if (empty($member)) {
- $member = Member::where('id', $m_id)->where('status',1)->select(['id', 'phone', 'nickname', 'status', 'token_str', 'level_id', 'source'])->first();
- if(empty($member)){
- throw new MemberAuthException('认证信息已过期', 401);
- }
- }
- if ($member['token_str'] != $token) {
- throw new MemberAuthException('认证信息已过期', 401);
- }
- //用户信息缓存30秒
- RedisDataServer::creatServer()->setData($token . '_' . $m_id, $member, 'json', 300);
- $request->member = $member;
- }else{
- $m_id = $request->input('m_id','');
- $token = $request->input('token','');
- if($m_id && $token){
- $member = RedisDataServer::creatServer()->getData( 'login_' . $m_id, 'json');
- if (empty($member)) {
- $member = Member::where('id', $m_id)->where('status',1)->select(['id', 'phone', 'nickname', 'status', 'token_str', 'level_id', 'source'])->first();
- }
- //用户信息缓存30秒
- if($member){
- RedisDataServer::creatServer()->setData($token . '_' . $m_id, $member, 'json', 300);
- $request->member = $member;
- }else{
- $request->member = ['id'=>0];
- }
- }else{
- $request->member = ['id'=>0];
- }
- }
- return $next($request);
- }
- }
|