ASP.NET Web Pages - Objek WebSecurity

Deskripsi

Objek WebSecurity menyediakan keamanan dan autentikasi untuk aplikasi ASP.NET Web Pages.

Dengan objek WebSecurity, Anda dapat membuat akun pengguna, login dan logout, memulihkan atau mengubah sandi, dan lainnya untuk aplikasi ASP.NET Web Pages.

Panduan Objek WebSecurity - Properti

Properti Deskripsi
CurrentUserId Mengambil ID pengguna saat ini.
CurrentUserName Mengambil nama pengguna pengguna saat ini.
HasUserId Mengambil nilai yang menunjukkan apakah pengguna saat ini memiliki ID pengguna. Jika ya, kembalikan true.
IsAuthenticated Mengambil status autentikasi pengguna saat ini.

Panduan Objek WebSecurity - Metode

Properti Deskripsi
ChangePassword() Mengubah sandi pengguna.
ConfirmAccount() Mengkonfirmasi keberlanjutan akun dan mengaktifkan akun tersebut.
CreateAccount() Membuat akun pengguna baru.
CreateUserAndAccount() Membuat akun pengguna baru.
GeneratePasswordResetToken() Menghasilkan token pemulihan sandi yang dapat dikirim melalui email kepada pengguna.
GetCreateDate() Mengembalikan tanggal dan waktu pendaftaran akun keanggotaan yang ditentukan.
GetPasswordChangeDate() Mengembalikan tanggal dan waktu pengubah sandi akun keanggotaan yang ditentukan terbaru.
GetPasswordFailures
SinceLastSuccess()
Mengembalikan jumlah kesalahan input sandi yang salah sejak pendaftaran login sukses terakhir atau akun keanggotaan.
GetUserId() Mengembalikan ID pengguna berdasarkan nama pengguna yang ditentukan.
GetUserIdFrom
PasswordResetToken ()
Kembalikan ID pengguna daripada token pemulihan kata laluan.
InitializeDatabaseConnection() Mengawal sistem keanggotaan dengan menghubungkan ke pangkalan data yang mengandungi maklumat pengguna.
IsAccountLockedOut() Menunjukkan sama ada akaun keanggotaan yang ditentukan disekat kerana kemalangan cubaan kata laluan terlalu banyak.
IsConfirmed() Kembalikan nilai yang menunjukkan sama ada pengguna sudah disahkan atau bukan.
IsCurrentUser() Kembalikan nilai yang menunjukkan sama ada nama pengguna pengguna yang masuk sekarang sepadan dengan nama pengguna yang ditentukan.
Login() Daftar masuk pengguna.
Logout() Daftar keluar pengguna.
RequireAuthenticatedUser() Jika pengguna belum disahkan, hubungkan status kod HTTP kepada 401 (tidak berkebenaran).
RequireRoles() Jika pengguna sekarang bukan anggota daripada peranan yang ditentukan, hubungkan kod status HTTP kepada 401.
RequireUser() Jika pengguna sekarang bukan pengguna yang ditentukan, hubungkan status kod HTTP kepada 401.
ResetPassword() Dapatkan semula kata laluan dengan token pemulihan kata laluan.
UserExists() Periksa sama ada pengguna wujud atau bukan.

技术数据

名称
Class WebMatrix.WebData.WebSecurity
Namespace WebMatrix.WebData
Assembly WebMatrix.WebData.dll

Mengawal pangkalan data WebSecurity

Sebelum mengguna pakai objek WebSecurity, anda mesti cipta atau mengawal pangkalan data WebSecurity.

Cipta atau edit halaman _AppStart.cshtml di dalam direktori web.

Tulis kod di bawah ini di dalam fail ini:

_AppStart.cshtml

@{
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", 
true);
}

Sekali penggunaan tapak web, kod di atas akan dijalankan. Ia akan mengawal penggunaan pangkalan data WebSecurity.

"Users" ialah nama pangkalan data WebSecurity (Users.sdf).

"UserProfile" ialah nama tab leksyen pengguna yang mengandungi maklumat konfigurasi pengguna.

"UserId" 包含用户 ID 的列的名称(主键)。

"Email" 是包含用户名称的列名。

最后一个参数 true 是一个逻辑值,指示应创建用户配置文件表和成员资格表(如果它们不存在),否则 false。

提示:尽管 true 指示自动创建数据库表,但数据库本身不会被自动创建。它必须存在。

WebSecurity 数据库

UserProfile 表中的每条记录代表一个用户,其中包括用户 ID (主键)和用户名称(email):

UserId Email
1 john@johnson.net
2 peter@peterson.com
3 lars@larson.eut

Membership 表包含成员资格信息,比如用户何时创建以及是否(以及何时)确认成员资格。

类似这样(某些列未列出):

UserId 创建日期 确认
令牌
是否
确认
最后的
密码错误
密码 密码更改
1 12.04.2012 16:12:17 NULL True NULL AFNQhWfy.... 12.04.2012 16:12:17

注释:如果您希望看到所有列和所有内容,请通过 WebMatrix 打开数据库,然后查看每张表。

简单的成员资格配置

如果您的站点未配置为使用 ASP.NET Web Pages 成员资格系统 SimpleMembership,那么可能会在使用 WebSecurity 对象时出现错误。

如果主机提供商的配置与您的本地服务器不同,就会发生错误。为了解决这个问题,请在站点的 Web.config 文件中添加以下元素:

<appSettings> 
<add key="enableSimpleMembership" value="true" /> 
</appSettings>