برنامه نویسی

احراز هویت در React Application را توضیح دهید

معرفی

امروزه به راحتی می‌توانیم تمام جزئیات را از اینترنت دریافت کنیم و تمام جزئیات را در یک سرور ذخیره کنیم، بنابراین، اگر هیچ گونه امنیتی نداشته باشیم، احتمال از دست رفتن اطلاعات یا سیستم غیرمجاز برای تغییر یا سرقت داده‌ها وجود دارد. احراز هویت فرآیندی برای مدیریت ساختار برنامه است، کاربر دارای امتیازات مناسب برای دسترسی به صفحه خاصی است که کاربر دارای امتیازات است.

احراز هویت چیست؟

احراز هویت فرآیندی برای بررسی یا عدم بررسی یک کاربر معتبر است. هویت واقعی هر کاربر را بررسی کنید، این فرآیند تأیید چیزی است که ادعا می کند. به عنوان مثال معیارهای ورود.

React API Authentication & Authorization

مواد و روش ها:

کلید API که به کاربر اجازه خدمات خاص را می دهد.

هنگامی که خدمات API را در تعداد محدودی دامنه و API سختگیرانه دریافت می کنید.

تصویب یک سیاست CORS حفاظت آینده را فراهم می کند زیرا دسترسی به برخی از نهادهای مجاز محدود شده است.

محدودیت IP White Listing:

آدرس IP ثابت: آدرس تغییر نمی کند

آدرس IP پویا: آدرس را می توان تغییر داد

  • API: کلید API اصطلاحی برای احراز هویت از طریق کلید است و دسترسی به برخی داده های خصوصی را فراهم می کند و شما باید کلید را حفظ کنید.
  • CORS (Cross-Origin-Resource-Sharing): برای محدود کردن انواع درخواست HTTP استفاده می شود و دسترسی محدود به منبع به دامنه بستگی دارد.
  • IP WhiteListing: هنگامی که باید به شبکه ای اعطا کنید و تعداد محدودی آدرس IP دارید، هر کاربر تأیید شده آدرس IP خانه خود را با مدیر شبکه به اشتراک می گذارد. هنگامی که آنها آدرس IP را وارد می کنند، IP در لیست سفید قرار می گیرد که دسترسی به شبکه را می دهد

راه های پیاده سازی مجوز و احراز هویت API

OAuth: فرآیندی است برای ارائه خدمات برای دسترسی به منابع دیگر.

به عنوان مثال وقتی برای حساب Github خود ثبت نام می کنید. معمولاً در یک صفحه نمایش به عنوان ثبت نام با Github یا ثبت نام با فیس بوک و می توانید مستقیماً با فیس بوک وارد شوید

این بدان معناست که برای ورود به سیستمی که مجاز به دسترسی به اطلاعات خود هستید، نیازی به نام کاربری یا رمز عبور لازم ندارید

OAuth پشت سرویس های احراز هویت پیاده سازی می شود.

نحوه کار با OAuth: یک سرویس به کاربر پیشنهاد می دهد تا با سرویس دیگری ادغام شود. در صورت پذیرش، سرویس اطلاعات کاربر را به سرویس دیگری ارسال می کند و از کاربر می پرسد که آیا کاربر با این ایمیل ثبت نام کرده است. یک کاربر با همان ایمیل دارد و آنها OAuth را پیاده سازی کرده اند.

می توانیم فرض کنیم که این درخواست مجوز معتبر است.

OpenID Connect: این امکان را به مشتری می دهد تا هویت کاربر نهایی را تأیید کند.

npm install –save react-OpenID connect

نمونه برنامه React ایجاد کنید

import React, { Component } from 'react';
import Authenticate from 'react-openidconnect';
import OidcSettings from './oidcsettings';

class App extends Component {

  constructor(props) {
    super(props);
    this.userLoaded = this.userLoaded.bind(this); 
    this.userUnLoaded = this.userUnLoaded.bind(this);

    this.state = { user: undefined };
  }  

  userLoaded(user) {
    if (user)
      this.setState({ "user": user });
  } 

  userUnLoaded() {
    this.setState({ "user": undefined });
  } 

  NotAuthenticated() {
    return<div>You are not authenticated, please click here to authenticate.</div>;
  }

  render() {
      return (
            <authenticate oidcsettings="{OidcSettings}" rendernotauthenticated="{this.NotAuthenticated}" userloaded="{this.userLoaded}" userunloaded="{this.userUnLoaded}"><div>If you see this you are authenticated.</div>
        </authenticate>
      )
  }
}

export default App;

provide the below properties:

var OidcSettings = {    
  authority: 'https://****/identity',
  client_id: 'myclientid',
  redirect_uri: 'https://localhost:9090/',    
  response_type: 'id_token token',
  scope: 'openid profile roles',
  post_logout_redirect_uri: 'https://localhost:9090/'      
};

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر بخوانید: بهینه سازی فروشگاه App برای پلتفرم های موبایل

احراز هویت لاگین در React

اجباری: ابتدا باید محیط توسعه ای را اجرا کنید که Node.js نسخه 10.22.0 و npm نسخه 6.14.6 را توصیه می کند، باید آن را روی سیستم عامل مک نصب کنید.

مراحل را دنبال کنید:

ابتدا باید پروژه react را ایجاد کنید

بررسی کنید npm با موفقیت اجرا شود یا خیر

گره -ve

اگر نام نسخه را مشاهده کردید به این معنی است که گره شما با موفقیت نصب شده است

npx create-react-app project_name

سی دی پروژه_نام

شروع npm

اگر می خواهید سبکی ارائه دهید تا بتوانید به صورت دستی css را در فایل app.css اضافه کنید

Mycss.css

App-header {
  background-color: gray;
  padding: 10px;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر بار که باید بسته ها را طبق نیاز پروژه خود اضافه کنید

زمانی که پروژه شما با موفقیت در لوکال هاست اجرا شود

فایل App.js را باز کنید

import logo from './logo.svg';
import './App.css';

function App() {
  return (<div classname="App"><header classname="App-header">
            <img alt="logo" classname="App-logo" src="https://dev.to/ifourtechnolab/{logo}"><p>
          Edit <code>src/App.js</code> and save to reload.</p>
            <a classname="App-link" href="https://reactjs.org" rel="noopener noreferrer" target="_blank">
          Learn React
        </a></header></div>
  );
}

export default App;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

function App() {
  return (<div>
      HEllO MY REACT APP</div>
  );
}

export default App;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا یک صفحه ورود ایجاد کنید

شما باید بسته را نصب کنید

$ npm نصب react-router-dom

پس از نصب بسته، خروجی آن را مشاهده می کنید

13 بسته اضافه کرد و 1974 بسته را در 6s ممیزی کرد

شما باید دو مؤلفه ایجاد کنید که به عنوان خصوصی عمل می کنند، کاربر تا زمانی که با موفقیت وارد صفحه نشود نمی تواند به صفحه دسترسی پیدا کند.

دایرکتوری ایجاد کنید

mkdir src/components/داشبورد

mkdir src/components/Login

import React from 'react';

export default function Dashboard() {
  return(<h2>Dashboard</h2>
  );
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

فایل را ذخیره کنید

همان کد برای مؤلفه ورود

import React from 'react';

export default function Login() {
  return(<h2>Login page</h2>
  );
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون باید Route را وارد کنید، BrowserRoute را تغییر دهید

npm install react-router-dom:

import React from 'react';
import './App.css';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import Dashboard from '../Dashboard/Dashboard';
import Login from '../Login/Login';

function App() {
  return (<div classname="wrapper"><h1>Application</h1>
            <browserrouter>
            <switch>
            <route path="/dashboard">
            <dashboard>
          </dashboard></route>
            <route path="/Login">
            <login>
          </login></route>
        </switch>
      </browserrouter></div>
  );
}

export default App;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر پروژه http://localhost:3001/dashboard را اجرا کنید

شما می توانید صفحه داشبورد را ببینید، اما هنوز، هیچ امنیتی وجود ندارد، صفحه داشبورد پس از ورود موفقیت آمیز برای امنیتی که باید صفحه را ارائه کنیم، نمایش داده می شود.

آیا قصد دارید توسعه دهندگان React را از تیم اختصاصی استخدام کنید؟ جستجوی شما در اینجا به پایان می رسد.

مراحل را دنبال کنید:

ما باید یک دایرکتوری جدید برای مؤلفه ورود ایجاد کنیم

mkdir src/component /login_success

دایرکتوری صفحه ورود به سیستم را در یک ویرایشگر متن باز کنید

یک فرم ورود ایجاد کنید

import React from 'react';

export default function Login() {
  return(<form>
            <label>
        </label>
<p><label>Username</label></p><label>
            <input type="text">
      </label>
            <label>
        </label>
<p><label>Password</label></p><label>
            <input type="password">
      </label>
<div><button type="submit">Submit</button></div></form>
  )
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

فایل App.js را باز کنید

import React, { useState } from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import './App.css';
import Dashboard from '../Dashboard/Dashboard';
import LoginPage from '../Loginpage/Loginpage';
import Login from '../Login/Login';



function App() {
  const [token, setToken] = useState();
  if(!token) {
    return <login settoken="{setToken}">
  }


  return (<div classname="wrapper"><h1>Application</h1>
            <browserrouter>
            <switch>
            <route path="/dashboard">
            <dashboard>
          </dashboard></route>
            <route path="/preferences">
            <login>
          </login></route>
        </switch>
      </browserrouter></div>
  );
}

export default App;
</login>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر سعی کرده اید پروژه را اجرا کنید، همچنان می توانید از صفحه داشبورد دیدن کنید، یعنی نشانه هنوز تنظیم نشده است

اکنون باید API محلی را از صفحه ورود خود فراخوانی کرده و پس از بازیابی موفق توکن، مؤلفه را رندر کنید.

npm نصب –save-dev express cors

شما باید یک فایل جدید به نام server.js باز کنید اما به یاد داشته باشید که این فایل را به فهرست src/ اضافه نکنید

nano server.js $

وارد کردن express در server.js

const express = require('express');
const cors = require('cors')
const app = express();

app.use(cors());

app.use('/login', (req, res) => {
  res.send({
    token: 'test123'
  });
});
app.listen(8080, () => console.log('API is running on http://localhost:8080/login'));

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شما باید توکن ها را تنظیم کنید و پایه ها را مطابق با کد بالا تنظیم کنید

import React, { useState } from 'react';
import PropTypes from 'prop-types';
import './Login.css';

async function loginUser(credentials) {
 return fetch('http://localhost:8080/login', {
   method: 'POST',
   headers: {
     'Content-Type': 'application/json'
   },
   body: JSON.stringify(credentials)
 })
   .then(data => data.json())
}

export default function Login({ setToken }) {
  const [username, setUserName] = useState();
  const [password, setPassword] = useState();

  const handleSubmit = async e => {
    e.preventDefault();
    const token = await loginUser({
      username,
      password
    });
    setToken(token);
  }

  return(<div classname="login-wrapper"><h1>Please Log In</h1>
<form onsubmit="{handleSubmit}">
            <label>
          </label>
<p><label>Username</label></p><label>
            <input onchange="{e" type="text"> setUserName(e.target.value)} />
        </label>
            <label>
          </label>
<p><label>Password</label></p><label>
            <input onchange="{e" type="password"> setPassword(e.target.value)} />
        </label>
<div><button type="submit">Submit</button></div></form></div>
  )
}

Login.propTypes = {
  setToken: PropTypes.func.isRequired
};

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که پروژه را اجرا می کنید، یک لاگین موفق ایجاد خواهید کرد

نتیجه

احراز هویت یک نیاز ضروری برای بسیاری از برنامه ها است. احراز هویت همه چیز در مورد نگرانی های امنیتی است. اما اگر شما بر روی رندر کردن داده‌های ارسال شده از موجودیت داده در زمان مناسب تمرکز کنید، به یک فرآیند سبک تبدیل می‌شود.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا