TLと#MVCシンプルなカスタム認証; DRC役割
を編集
は基本的に、私はいくつかの関数に伝えたい:[OK]を、私はこのユーザーに私の自己をチェックしました、彼は大丈夫です。今、彼についての任意のデータを保存し、私のアプリの特定の部分にアクセスする権限を与える彼のためのセッションを作成します。この種の
何か:
logInUserFrameworkFunction(new UserStruct(int id, string username, RolesEnum[] roles));
そしてすべてが[Authorize(Roles = RolesEnum.Admin | RolesEnum.Manager)]
属性を機能させるために、バックグラウンドで処理されるよりも。
私はセッション私の自己でこれを作ることができるが、私はその部分をスキップしたいと思います:D
私はMVCとEntity Frameworkので遊んだ、と今私は簡単なユーザー認証を実装したいのですが役割を持つ
私はこのようなものになります私のデータベース内User
クラス/テーブルがありますログインコントローラでチェックし、今
public class Role {
int ID;
RoleType Type; // this is an Enum
}
public Enum RoleType {
visitor, employee, admin
}
:次のようになります
public class User {
int ID;
string Email;
string Password;
Role Role;
...
}
そしてRole
クラスを指定されたユーザー名とパスワードを持つユーザーが簡単な場合は、次のようにします。
[HttpPost]
public ActionResult LogIn(LogIn login) {
// If credentials are valid
if(new UserManager().IsValid(login.Username, login.Password)) {
var user = db.getUserByEmail(login.Username);
...
私は簡単にセッションにユーザーID
とRole
を保存し、よりすべての関連するコントローラ上のいくつかのfunction
を呼び出すことにより、資格情報をチェックするが、私はC#とMVCの機能の一部を使用することができます。
私はむしろ属性で行うことができますが、わかりません。
これは私がそれは次のようになり想像です:
[Roles(RoleType.visitor, RoleType.employee)]
public ActionResult SomeProtectedAction() {
// only employee and visitor can access this,
// others get redirected to where ever
...
}
これは、コントローラの大規模なアクセスを提供し、メソッドごとのレベルでアクセスを絞り込むことができる、ロールの本当の機能です。コントローラにアクセスする必要があるStaffという役割があるとしましょう(コントローラ全体が装飾されているので、Staffの役割に誰でもアクセスできます)。ただし、削除機能をAdminsのみに限定したいので、* Staff *と* Adminsの両方のユーザーだけが削除できるように、管理者ロールで削除メソッドを具体化するようにしましょう。スタッフとユーザーだけの人はできません。 (ビジネスロジック:アカウントごとに2つのロールreq。) –
私はこのような役割をどのように使用できるのかを知っていますが、どのようにユーザーにログインするのですか。私が呼ぶことができるこのような機能はありますか? :identityLoginUser(新しいidentityUser(int id、string username、RolesEnum [] roles) '、バックグラウンドでCookieを作成するのではなく、すべて最小限の労力で作業していますか? – Reygoch
ASP.NET IDの基本を理解していれば、 - ) [こちら](http://www.codeproject.com/Articles/762428/ASP-NET-MVC-and-Identity-Understanding-the-Basics)を検索し、「サインインヘルパー - 基本アイデンティティ2.0 Sign-In API」を参照してください。このv2.0には新しいものがありますが、あまり変わらないはずです。 – Legends